简单枚举法不解释。
#include<stdio.h>
#define MAX 105
int cherry[MAX][2];
int n;
void search() {
int i, j, k;
int oneHalf;
int theOther;
int error;
for (i = -500; i <= 500; i++)
for (j = -500; j <= 500; j++) {
oneHalf = theOther = 0;
error = 0;
for (k = 0; k < 2 * n; k++) {
if (i * cherry[k][0] + j * cherry[k][1] < 0)
oneHalf++;
else if (i * cherry[k][0] + j * cherry[k][1] > 0)
theOther++;
else {
error = 1;
break;
}
}
if (!error && oneHalf == theOther) {
printf("%d %d\n", i, j);
return;
}
}
}
int main() {
while (scanf("%d", &n) != EOF) {
if (n == 0)
break;
int k;
for (k = 0; k < 2 * n; k++) {
scanf("%d%d", &cherry[k][0], &cherry[k][1]);
}
search();
}
return 0;
}
本文介绍了一种通过简单枚举法解决特定数学问题的方法,详细阐述了算法实现过程,包括定义变量、初始化数组、搜索算法及输入输出处理。
576

被折叠的 条评论
为什么被折叠?



