Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

一次过了,留个代码,供人参考

Posted by hheq121 at 2009-04-23 21:42:48 on Problem 1244
#include<iostream>
#include<math.h>
using namespace std;
int t ;
char val[100];
int visited[100];
bool in[30];
typedef struct 
{
	char v;
	double x;
	double y;
}mynode;
mynode node[100];
int main()
{
	freopen("in.txt","r",stdin);
	int i,j;
	while(scanf("%d",&t)&&t)
	{
		memset(in,0,sizeof(in));
		scanf("%s",val);
		for(i=0;i<t;i++)
		{
			for(j=0;j<=i;j++)
			{
				node[i*(i+1)/2+j].v=val[i*(i+1)/2+j];
				node[i*(i+1)/2+j].x=i*1.0/2.0*(-1)+j;
				node[i*(i+1)/2+j].y=i*sqrt(3.0)/2;
			}
		}
		
		memset(visited,0,sizeof(visited));
		double x1,y1,x2,y2,x3,y3;int num=0;char now;
		bool flag1=false,flag2=false,flag3=false,flag=false;
		flag1=true;
		while(flag1==true)
		{
			for(i=0;i<strlen(val);i++)
			{
				flag1=false,flag2=false,flag3=false;
				if(visited[i]==false)
				{	
					now=node[i].v;
					x1=node[i].x;
					y1=node[i].y;
					visited[i]=true;
					flag1=true;
					break;
					
				}
			}
			for(i=i+1;i<strlen(val);i++)
			{
				if(visited[i]==false&&node[i].v==now)
				{
					x2=node[i].x;
					y2=node[i].y;
					flag2=true;
					visited[i]=true;
					break;
				}
			}
			for(i=i+1;i<strlen(val);i++)
			{
				if(visited[i]==false&&node[i].v==now)
				{
					x3=node[i].x;
					y3=node[i].y;
					visited[i]=true;
					flag3=true;
					break;
				}			
			}
			if(flag1==true&&flag2==true&&flag3==true)
			{
				double temp1,temp2,temp3;
				temp1=(x2-x3)*(x2-x3)+(y2-y3)*(y2-y3);
				temp2=(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);
				temp3=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
				double sub1=temp1-temp2;
				if(sub1<0)
				sub1*=-1;
				double sub2=temp2-temp3;
				if(sub2<0)
				sub2*=-1;
				double sub3=temp1-temp3;
				if(sub3<0)
				sub3*=-1;
				if(sub1<0.0000000001&&sub2<0.0000000001&&sub3<0.0000000001)
				{
					in[now-'a']=true;
					flag=true;
				}
			}
			
		}

		if(flag==false)
		printf("LOOOOOOOOSER!");
		else
		{
			for(i=0;i<30;i++)
				if(in[i]==true)
					printf("%c",i+'a');
		}
		printf("\n");
		
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator