标签:
题意:0可以走,1不可以走;
正确做法应该是广搜(逃
但是窝懒得看了,,回头再补,,
用dfs水过去了,,忧桑,,
AC代码:
#include <stdio.h> #include <string.h> #include <algorithm> #include <queue> const int dx[4]= {0,0,1,-1}; const int dy[4]= {1,-1,0,0}; using namespace std; int n,m,vis[101][101],k1,f; int s[10][10]; struct node { int x1; int y1; } s1[1010]; void dfs(int x,int y) { s1[k1].x1=x; s1[k1++].y1=y; if(x==4&&y==4) { for(int i=0; i<k1; i++) { printf("(%d, %d)\n",s1[i].x1,s1[i].y1); } f=1; return ; } for(int i=0; i<4; i++) { int kx=x+dx[i]; int ky=y+dy[i]; if(kx>=0&&kx<5&&ky>=0&&ky<5&&vis[kx][ky]==0&&s[kx][ky]==0) { vis[kx][ky]=1; dfs(kx,ky); if(f==1) { return ; } k1--; vis[kx][ky]=0; } } return ; } /*void bfs() { queue<node>q; s.x=0; s.y=0; q.push(s); while(!q.empty()) { node s1=q.front(); int kx=s1.x+1; int ky=s1.y+1; if(kx>=0&&kx<5&&ky>=0&&ky<5&&vis[kx][ky]==0) { vis[kx][ky]=1; k.x=kx; k.y= q.push() } } while() }*/ int main() { k1=0; f=0; memset(vis,0,sizeof(vis)); for(int i=0; i<5; i++) { for(int j=0; j<5; j++) { scanf("%d",&s[i][j]); } } dfs(0,0); return 0; }
标签:
原文地址:http://www.cnblogs.com/qioalu/p/4921568.html