| ||||||||||
| 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 | |||||||||
Re:这题数据有超出题目要求,我开50*50的数组WA,开51*51AC,下面是我的代码,我想没有越界之处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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator