| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
都考虑了,而且还写了几个版本In Reply To:Is there any trick?Why I always WA? Posted by:windbells at 2004-11-04 12:07:26 nun[i][j].n[k]分别表示从这一点到上,左,左上,右上有几个连续的点
#include<stdio.h>
#include<string.h>
typedef struct
{
int n[4];
}nod;
#define Max 22
nod num[Max][Max];
int clj[4][2]={{0,-1},{-1,0},{-1,-1},{-1,1}};
int map[Max][Max];
int r,c,b[3];
void init()
{
int i,j,k,tmp;
memset(map,0,sizeof(map));
for(i=1;i<20;i++)
for(j=1;j<20;j++)
{
scanf("%d",&tmp);
map[i][j]=tmp;
}
for(i=0;i<=20;i++)
for(j=0;j<=20;j++)
for(k=0;k<3;k++)
num[i][j].n[k]=1;
for(i=1;i<3;i++)
b[i]=0;
}
void solve()
{
int i,j,k,tmpr,tmpc;
for(i=1;i<=19;i++)
for(j=1;j<=19;j++)
{
if(map[i][j]==0)
continue;
for(k=0;k<4;k++)
{
tmpr=i+clj[k][0];
tmpc=j+clj[k][1];
if(map[i][j]==map[tmpr][tmpc])
{
num[i][j].n[k]=num[tmpr][tmpc].n[k]+1;
if(num[i][j].n[k]==5&&map[i][j]!=map[i-clj[k][0]][j-clj[k][1]])
{
b[map[i][j]]=1;
if(k==3){ r=i;c=j; }
else { r=i+4*clj[k][0];c=j+4*clj[k][1]; }
return ;
}
}
}
}
}
void print()
{
int i;
for(i=1;i<3;i++)
if(b[i]==1)
break;
if(i==3)
printf("0\n");
else
printf("%d\n%d %d\n",i,r,c);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
init();
solve();
print();
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator