DFS 深度优先搜索
- 结束判断条件
- 循环枚举可能的情况
- 判断当前情况是否合法
- 恢复至之前模样
走出迷宫方法问题
从起点到终点,有多少种不同的方法
#include using namespace std; int cnt,n = 2; int xi[4] = {-1,0,1,0}; int yi[4] = {0,1,0,-1}; int a[100],b[100]; bool st[10][10] ; void DFS(int x,int y,int u) { if(x==n&& y==n){ cnt++; for(int i=0;i<u;i++) cout <<"("<< a[i] <<","<< b[i] <<")"; cout <<endl; return; } for(int i=0;i<=3;i++) { int ix= x+xi[i], iy = y+yi[i]; if(st[ix][iy] || ixn ||iyn) continue; st[ix][iy] = true; a[u] = ix ,b[u] = iy; DFS(ix,iy,u+1); st[ix][iy] = false; } } int main() { st[1][1] = true; DFS(1,1,1); cout << cnt; return 0; }