走迷宫 sdut bfs 深度搜索
来源:互联网 发布:java毕向东视频 编辑:程序博客网 时间:2024/06/01 17:40
题目描述
一个由n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从起点到终点经过每个格子至多一次的走法数。
输入
第一行一个整数T 表示有T 组测试数据。(T <= 110)
对于每组测试数据:
第一行两个整数n, m,表示迷宫有n * m 个格子。(1 <= n, m <= 6, (n, m) !=(1, 1) ) 接下来n 行,每行m 个数。其中第i 行第j 个数是0 表示第i 行第j 个格子可以走,否则是1 表示这个格子不能走,输入保证起点和终点都是都是可以走的。
任意两组测试数据间用一个空行分开。
输出
对于每组测试数据,输出一个整数R,表示有R 种走法。
示例输入
32 20 10 02 20 11 02 30 0 00 0 0
示例输出
104
提示
来源
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;int mapp[100][100];int mv[100][100];int mx[4]= {1,-1,0,0};int my[4]= {0,0,1,-1};int m,n;int sum;void dfs(int x,int y){ int i; int f1,f2; for(i=0; i<4; i++) { f1=x+mx[i]; f2=y+my[i]; if(f1>=0&&f1<n&&f2>=0&&f2<m&&mapp[f1][f2]==0&&mv[f1][f2]==0) { if(f1==n-1&&f2==m-1) { sum++; continue; } else { mv[f1][f2]=1; 标记为走过, dfs(f1,f2); 继续搜索 mv[f1][f2]=0; 标记为没走过,用于接下来的搜索,要的是几种路径,不是需要几步可以到达,故每种走法也行经过同一个点。 } } }}int main(){ int t,i,j; scanf("%d",&t); while(t--) { sum=0; scanf("%d %d",&n,&m); for(i=0; i<n; i++) { for(j=0; j<m; j++) { scanf("%d",&mapp[i][j]); mv[i][j]=0; } } mv[0][0]=1; dfs(0,0); printf("%d\n",sum); } return 0;}
0 0
- 走迷宫 sdut bfs 深度搜索
- 深度优先搜索之走迷宫 (sdut oj 2449)
- hud 1010 走迷宫 搜索—bfs
- bfs走迷宫宽度优先搜索
- DFS深度优先搜索之走迷宫
- 走迷宫——深度优先搜索
- 深度优先搜索应用:走迷宫
- 深度优先搜索DFS 走迷宫
- dfs走迷宫_深度优先搜索
- SDUT OJ 走迷宫
- SDUT 2449 走迷宫
- SDUT 1269 走迷宫
- SDUT 1269 走迷宫
- sdut 走迷宫
- SDUT 1269 走迷宫
- SDUT-走迷宫
- SDUT 1269 走迷宫
- 逃离迷宫 HDU-1728 BFS深度搜索
- Java 中 instanceOf(关键字) 的用法
- Codeforces Round #258 (Div. 2) B. Sort the Array
- VS、GNU STL存在一个Bug,而STLport-5.2.1则是没有的。已经过侯捷先生确认!!
- android混淆打包配置(忽略第三方jar)
- 京东电话什么
- 走迷宫 sdut bfs 深度搜索
- android防破解方法汇总
- MATLAB函数参数个数控制
- Matlab矩阵查找
- 彩信代码结构分析
- Matlab将一矩阵中等于某个值的元素全部替换成另一个值
- 协方差矩阵
- Matlab矩阵的拼接
- android sql 读取聊天记录,要分组最新