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 |
完全一样的算法,我的怎么是wa?In Reply To:帮帮忙 看看哪里错了 Posted by:ync at 2005-04-01 19:07:55 > #include<stdio.h> > #include<string.h> > char A[105][105]; > int N,M; > void recur(int i,int j) > { > A[i][j]='W'; > if(i>1&&A[i-1][j]=='.') recur(i-1,j); > > if(i>1&&j>1&&A[i-1][j-1]=='.') recur(i-1,j-1); > > if(j>1&&A[i][j-1]=='.') recur(i,j-1); > > if(i<N&&j>1&&A[i+1][j-1]=='.') recur(i+1,j-1); > > if(i<N&&A[i+1][j]=='.') recur(i+1,j); > > if(i<N&&j<M&&A[i+1][j+1]=='.') recur(i+1,j+1); > > if(j<M&&A[i][j+1]=='.') recur(i,j+1); > > if(i>1&&j<M&&A[i-1][j+1]=='.') recur(i-1,j+1); > return ; > > } > int main() > { > int i,j,block; > while(1) > { > scanf("%d%d",&N,&M); > for(i=1;i<=N;i++) > { > scanf("%s",A[i]+1); > } > > block=0; > for(i=1;i<=N;i++) > { > for(j=1;j<=M;j++) > { > if(A[i][j]=='W') continue; > block++; > recur(i,j); > } > } > > printf("%d\n",block); break; > }//while > return 0; > } > /* N x M (1 <= N <= 100; 1 <= M <= 100 下面是我的程序,过不了,不知道为什么。 #include<stdio.h> #include<stdlib.h> #include<iostream.h> char aaa[102][102]; int n1,m1;//要输入的变量,表示行和列 int b[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};//在递归的时候向八个方向扫描时用 int xunhuan(int i,int j) { int k; aaa[i][j]='.'; //if(a//////////////////////////////////////////// for( k=0;k<8;k++) { int b1=b[k][0]; int b2=b[k][1]; i=i+b1; j=j+b2; if(i>=0&&i<n1&&j>=0&&j<m1&&aaa[i][j]=='W') xunhuan(i,j); else {i=i-b1;j=j-b2;} } return 1; } void main() { int i,j; //int n,m; cin>>n1>>m1; for(i=0;i<n1;i++) cin>>aaa[i]; //输入数组 int bbb=0; for(i=0;i<n1;i++) for(j=0;j<m1;j++) { if(aaa[i][j]=='W') { bbb++; xunhuan(i,j); //调用函数扫描 } } cout<<bbb<<endl; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator