您的位置:首页 > 其它

POJ 1244 Slots of Fun(计算几何)

2013-10-14 17:09 288 查看
题目链接

很简单的一题,数据 很小,直接暴力的。但是也是写也好久,有几个数,没算好。。。一次CE,一次PE,3Y。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
#define eps 1e-8
#define zero(x) (((x) > 0?(x):-(x))<eps)
int o[200];
struct point
{
double x,y;
} p[1001];
double dis(point p1,point p2)
{
return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);
}
int judge(int i,int j,int k)
{
if(zero(dis(p[i],p[j])-dis(p[j],p[k]))&&zero(dis(p[i],p[j])-dis(p[i],p[k])))
return 1;
else
return 0;
}
char str[1001];
int main()
{
int n,i,j,k,num = 1,len,flag;
double d;
p[0].x = 0;
p[0].y = 0;
for(i = 2; i <= 12; i ++)
{
d = (i-1)*1.0*sqrt(3.0)*2.0/3.0/(i-1);
p[num].x = -(i-1)*1.0*sqrt(3.0)/3.0;
p[num].y = i-1;
num ++;
for(j = 1; j < i; j ++)
{
p[num].x = p[num-1].x + d;
p[num].y = i-1;
num ++;
}
}
while(scanf("%d",&n)!=EOF)
{
if(n == 0) break;
memset(o,0,sizeof(o));
scanf("%s",str);
len = strlen(str);
flag = 0;
for(i = 0; i < len; i ++)
{
for(j = i+1; j < len; j ++)
{
if(str[i] == str[j])
for(k = j+1; k < len; k ++)
{
if(str[j] == str[k])
{
if(judge(i,j,k))
{
flag = 1;
o[str[i]+0] ++;
}
}
}
}
}
if(!flag)
{
printf("LOOOOOOOOSER!\n");
continue;
}
for(i = 0;i <= 128;i ++)
{
if(o[i])
{
for(j = 1;j <= o[i];j ++)
printf("%c",i);
}
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: