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

Re:TLE ,有谁帮我看看

Posted by xdss at 2007-08-04 09:40:34 on Problem 3316
In Reply To:TLE ,有谁帮我看看 Posted by:bjtuacmer200710 at 2007-08-03 15:45:24
> #include <iostream>
> using namespace std;
> char a[202][202];
> bool sign[202][202];
> 
> int main(int argc, char* argv[])
> {
> 	int n,m,i,j,k,num[202][202],x[202],y[202];
> 	bool a[202][202],sign[202][202];
> 	while(scanf("%d%d",&n,&m)&&n+m)
> 	{
> 		memset(sign,0,sizeof(sign));
> 		memset(a,'0',sizeof(a));
> 		memset(num,0,sizeof(num));
> 		k=0;
> 		for(i=1;i<=n;i++)
> 		{
> 			getchar();
> 			for(j=1;j<=m;j++)
> 				scanf("%c",&a[i][j]);
> 		}
> 		for(i=1;i<=n;i++)
> 			for(j=1;j<=m;j++)
> 			{
> 				num[i][j]=(a[i-1][j]=='1')+(a[i][j-1]=='1')+(a[i+1][j]=='1')+(a[i][j+1]=='1');
> 				//四周1的个数
> 				if(a[i][j]=='1'&&num[i][j]<=1)//蛇的端点
> 				{
> 					x[k]=i;
> 					y[k++]=j;
> 				}
> 			}
> 		int count=0;//MAX蛇的个数
> 		while(k--)
> 		{
> 			if(!sign[x[k]][y[k]])
> 			{
> 				sign[x[k]][y[k]]=1;//是否访问
> 				i=x[k];
> 				j=y[k];
> 				while(1)
> 				{
> 					if(num[x[k]][y[k]]==0)//蛇长为1
> 						break;
> 					if(a[i-1][j]=='1'&&!sign[i-1][j])
> 						i--;
> 					else
> 					{
> 						if(a[i][j-1]=='1'&&!sign[i][j-1])
> 							j--;
> 						else
> 						{
> 							if(a[i+1][j]=='1'&&!sign[i+1][j])
> 								i++;
> 							else
> 								if(a[i][j+1]=='1'&&!sign[i][j+1])
> 									j++;
> 						}
> 					}
> 					sign[i][j]=1;
> 					if(num[i][j]!=2)
> 						break;	
> 				}
> 				if(num[i][j]>2)//有分支,不是蛇
> 				{
> 					sign[i][j]=0;
> 					continue;
> 				}
> 				if(num[x[k]-1][y[k]]==1||num[x[k]][y[k]-1]==1||
> 					num[x[k]+1][y[k]]==1||num[x[k]][y[k]+1]==1)
> 						continue;
> 				if(num[i-1][j]==1||num[i][j-1]==1||
> 					num[i+1][j]==1||num[i][j+1]==1)
> 						continue;
> 				count++;
> 			}
> 
> 		}
> 		printf("%d\n",count);	
> 	}
> 	return 0;
> }
> 测数据
  2 2
  1 1
  1 1
有误 应该是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