迷宫问题 bfs
#include<stdio.h> #include<string.h> #include<stdlib.h> int map[10][10],dp[10][10]; int xx[4]={1,0,0,-1}; int yy[4]={0,1,-1,0}; int mark[40][40]; int judge(int x,int y) { if(x<0||x>=5||y<0||y>=5) return 0; return 1; } void DFS(int x,int y) { int i,j,x1,y1; if(x==4&&y==4) { for(i=0;i<5;i++) for(j=0;j<5;j++) if(dp[i][j]==1) printf("(%d,%d)\n",i,j); return ; } if(map[x][y]==1) return; map[x][y]=1; for(i=0;i<4;i++) { x1=x+xx[i]; y1=y+yy[i]; if(map[x1][y1]!=1&&judge(x1,y1)) { dp[x1][y1]=1; DFS(x1,y1); dp[x1][y1]=0; } } } int main( ) { int i,j,k; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&map[i][j]); memset(dp,0,sizeof(dp)); dp[0][0]=1; DFS(0,0); system("pause"); return 0; }
posted on 2011-05-10 20:38 more think, more gains 阅读(266) 评论(0) 编辑 收藏 举报