| ||||||||||
| 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