深度优先搜索之走迷宫 (sdut oj 2449)
来源:互联网 发布:mysql 查询 锁定的表 编辑:程序博客网 时间:2024/05/21 09:37
走迷宫
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
一个由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 <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>using namespace std;int mp[10][10], vis[15][15];int sum, n, m;void Dfs(int x, int y){ if(x < 1||x > n||y < 1||y > m||mp[x][y] == 1) return ; if(x == n&&y == m) { sum++; return; } if(vis[x][y] == 0) { vis[x][y] = 1; Dfs(x+1, y); Dfs(x, y+1); Dfs(x-1, y); Dfs(x, y-1); vis[x][y] = 0; }}int main(){ int t; scanf("%d", &t); while(t--) { sum = 0; memset(vis, 0, sizeof(vis)); scanf("%d %d", &n, &m); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { scanf("%d", &mp[i][j]); } } Dfs(1, 1); printf("%d\n", sum); } return 0;}
0 0
- 深度优先搜索之走迷宫 (sdut oj 2449)
- DFS深度优先搜索之走迷宫
- SDUT OJ 2449 走迷宫
- SDUT OJ 2449 走迷宫
- sdut oj 2449 走迷宫
- 走迷宫 sdut bfs 深度搜索
- SDUT OJ 走迷宫
- 走迷宫——深度优先搜索
- 深度优先搜索应用:走迷宫
- 深度优先搜索DFS 走迷宫
- dfs走迷宫_深度优先搜索
- 南阳理工oj 306 走迷宫 深度优先搜索+二分搜索
- 深度优先搜索(堆栈)解决走迷宫问题
- 深度优先搜索实现迷宫的走法
- 深度优先搜索例1--走迷宫问题
- SDUT 2449 走迷宫
- 实验3-栈和队列——深度优先搜索——走迷宫(2449)
- C++广度优先搜索算法之走迷宫
- php时间处理
- ulua在C#中调用lua并传递参数
- 我的CSDN博客开通了
- 交叉编译工具arm-linux-
- TI芯片TMS320DM642开发
- 深度优先搜索之走迷宫 (sdut oj 2449)
- 三分钟秒懂java注解
- MYSQL(一)
- leetcode[7] Reverse Integer
- 输入一个整数n求从1 到n这n个整数的十进制表示中1 出现的次数。
- BZOJ4653 [Noi2016]区间
- Networking
- setValue: forkey与 setObject区别
- JavaScript---学习一