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:这题数据有超出题目要求,我开50*50的数组WA,开51*51AC,下面是我的代码,我想没有越界之处

Posted by clswei at 2009-05-03 22:09:47 on Problem 1164
In Reply To:这题数据有超出题目要求,我开50*50的数组WA,开51*51AC,下面是我的代码,我想没有越界之处 Posted by:ilovenwd at 2005-05-19 18:36:20
> #include<cstdlib>
> #include<cstdio>
> #include<cstring>
> #include<algorithm>
> using namespace std;
> #define clr(x) memset(x,0,sizeof(x))
> 
> // 1 (= wall to the west), 2 (= wall to the north), 
> // 4 (= wall to the east), 8 (= wall to the south). 
> 
> const int D[][2]={{0,-1},{-1,0},{0,1},{1,0} };
> const char wall[]={ 1,2,4,8 };
> int dfn;
> const int maxN=50;
> char mark[maxN][maxN],M[maxN][maxN];
> int h,w;
> 
> void dfs(int i,int j)
> {
> 	mark[i][j]=1; dfn++;
> 	for(int d=0;d<4;d++) {
> 		int ii=i+D[d][0],jj=j+D[d][1];
> 		if(ii<h && ii>=0 && jj<w && jj>=0
> 			&& !mark[ii][jj] && (M[i][j] & wall[d])==0)
> 			dfs(ii,jj);
> 	}
> }
> 
> int main()
> {
> 	//freopen("test.in","r",stdin); 
> 	int i,j,k,ca;
> 	while(scanf("%d %d",&h,&w)!=EOF) {
> 		for(i=0;i<h;i++)
> 			for(j=0;j<w;j++) 
> 				scanf("%d",&M[i][j]);
> 		int m=0,n=0;
> 		clr(mark);
> 		for(i=0;i<h;i++)
> 			for(j=0;j<w;j++)
> 				if(!mark[i][j]) {
> 					n++; dfn=0;
> 					dfs(i,j);
> 					if(dfn>m) m=dfn;
> 				}
> 		printf("%d\n%d\n",n,m);
> 	}
> }

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