您的位置:首页 > 其它

uva 10167 Birthday Cake(暴力枚举)

2015-07-24 15:02 99 查看
。。。。还不是完全自己独立做出来的题目,虽然很暴力,好像是范围为[-500,500],但是题上为什mustn't in呢,我还白痴的用点到直线的距离求个数,判断是在直线上还是下应该直接带入就ok了!!!看是大于0还是小于0,不过通过这个我又知道了点到直线距离公式,之前给忘了,d
= abs(Ax+By+c)/sqrt(A*A+B*B)

贴代码了:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int dx[105];
int dy[105];
int main()
{
int n,m,a,b,i,j,k;
while(scanf("%d",&n),n)
{
memset(dx,0,sizeof(dx));
memset(dy,0,sizeof(dy));
for(i=1; i<=2*n; i++)
{
scanf("%d%d",&dx[i],&dy[i]);
}
int flag = 0;
int flag1 = 0;
for(i=-500; i<=500; i++)
{
for(j=-500; j<=500; j++)
{
if(i==0&&j==0)
continue;
int ans1 = 0;
int ans2 = 0;
flag1 = 0;
for(k=1; k<=2*n; k++)
{
if(i*dx[k]+j*dy[k] == 0)
{
flag1 = 1;
break;
}
else if(i*dx[k]+j*dy[k] > 0)
{
ans1++;
}
else if(i*dx[k]+j*dy[k]<0)
{
ans2++;
}
}
if((ans1 == ans2)&&(flag1==0))
{
flag = 1;
printf("%d %d\n",i,j);
break;
}
}
if(flag)
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: