基本思路:枚举
数学方法:用叉积判断点与直线的关系
#include<iostream>//几何,枚举
using namespace std;
int cherryx[105];//可以用一维数组的时候尽量避免用二维
int cherryy[105];
int main()
{
int n;
int x,y;
while(cin>>n&&n!=0)
{
for(int i=0;i<2*n;i++)
{
cin>>cherryx[i]>>cherryy[i];
}
for(int j=-500;j<=500;j++)//此处不可以默认B为1,A 从-500到500开始历遍,因为这样的话斜率都为整数,
// 漏了很多为分数的斜率
{ int flag=0;
for(int t=-500;t<=500;t++)
{
int up=0;
int down=0;
for(int i=0;i<2*n;i++)
{
if(j*cherryx[i]+t*cherryy[i]<0) down++;//数学方法:用叉积判断点与直线的关系
else if(j*cherryx[i]+t*cherryy[i]==0) break;
else up++;
}
if(up==n&&down==n)
{ flag=1;
cout<<j<<" "<<t<<endl;
break;
}
}
if(flag==1) break;
}
}
}