UVA - 146 ID Codes

本文介绍了一个通过寻找最优直线来分割平面点集的问题解决方案。利用双重循环遍历所有可能的直线参数,判断每条直线是否能将点集正确分为两类。最终输出能够实现正确分割的直线参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意:判断一个字符串有没有下一个字典串

解题思路:从后往前判断,找到符合当前字符大小小于下一个字符大小的字符,找到该字符,然后再从该字符往后遍历,找到一个大于它的字符最小字符进行替换,然后再把后面的按升序排列

#include<cstdio>

struct code{
	int x;
	int y;
};

int main() {
	int N, test,a,b,mark,num;
	code p[1000];
	while(scanf("%d", &N) && N) {
		for(int i = 0; i < 2 *N ;i++) {
			scanf("%d %d",&(p[i].x), &(p[i].y));	
		}
		mark = 0;
		for( a = -500; a <= 500; a++)  {
			for( b = -500; b <= 500; b++) {
				if(a == 0 && b == 0)
					continue;
				num = 0;

				for(int i = 0; i < 2 *N; i++) {
					if((a*p[i].x) + (b * p[i].y) > 0) num++;
					if((a*p[i].x) + (b * p[i].y) == 0) {
						num = 0;
					   	break;
					}	
				}
				
				if(num == N) {
					mark = 1;
					break;	
				}		
			}
			if(mark)
				break;
		}

		printf("%d %d\n", a,b);
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值