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:简单的DFS,不过内存用得较多,有什么办法可减少内存的使用?(附代码)In Reply To:简单的DFS,不过内存用得较多,有什么办法可减少内存的使用?(附代码) Posted by:KosonLau at 2007-05-18 22:08:53 > #include<string> > #include<stack> > #include<cstdio> > using namespace std; > > char image[21][21]; > int flag[21][21]; > int move[8][2]={ {-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1} }; > int sum,row,col,rr,cc; > > void dfs(int r,int c){ > flag[r][c]=1; > for(int i=0;i<8;i++){ > int x=r+move[i][0]; > int y=c+move[i][1]; > if(x>=0&&x<row&&y>=0&&y<col){ > if(image[x][y]=='X'&&!flag[x][y]) > dfs(x,y); > else if(image[x][y]=='.'&&(x==r||y==c)) > sum++; > }else{ > if(x==r||y==c) > sum++; > } > } > return; > } > int main(){ > while(scanf("%d%d%d%d",&row,&col,&rr,&cc)&&row!=0){ > for(int i=0;i<row;i++) > scanf("%s",image[i]); > memset(flag,0,sizeof(flag)); > sum=0; > dfs(rr-1,cc-1); > printf("%d\n",sum); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator