走迷宫

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 种走法。

示例输入

3
2 2
0 1
0 0
2 2
0 1
1 0
2 3
0 0 0
0 0 0

示例输出

1
0
4
 #include<iostream>
#include<string.h>
using namespace std;
int visited[][];
int m,n;
int f[][],sum;
int hang[]={,,,-},lie[]={,,-,};
void dfs(int h,int l)
{
visited[h][l]=;
int i;
for(i=;i<=;i++)
{
int h1=h+hang[i];
int l1=l+lie[i];
if(h1>=&&h1<=m&&l1>=&&l1<=n)
{
if(f[h1][l1]==&&visited[h1][l1]!=)
{
if(h1==m&&l1==n)
sum++;
else dfs(h1,l1);
}
}
}
visited[h][l]=;
}
int main()
{
int zong;
cin>>zong;
while(zong--)
{
memset(visited,,sizeof(visited));
memset(f,,sizeof(f));
sum=;
cin>>m>>n;
int i,j;
for(i=;i<=m;i++)
for(j=;j<=n;j++)
cin>>f[i][j];
dfs(,);
cout<<sum<<endl;
}
return ;
}

sdut 2449走迷宫【最简单的dfs应用】的更多相关文章

  1. 数据结构之 栈与队列--- 走迷宫(深度搜索dfs)

    走迷宫 Time Limit: 1000MS Memory limit: 65536K 题目描述 一个由n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次可以向上下左右四个方 ...

  2. noj电子老鼠走迷宫(深搜dfs)超时错误

    1042.电子老鼠闯迷宫 时限:1000ms 内存限制:10000K  总时限:3000ms 描述 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色 ...

  3. SDUT 1269 走迷宫(BFS)

    点我看题目 题意:中文不详述. 思路 :上上上场比赛让一个BFS给虐了,上次比赛让一个三维的给废掉了.......所以急于从水题刷起......还因为数组开小了WA了5,6次 #include < ...

  4. NYOJ306 走迷宫(dfs+二分搜索)

    题目描写叙述 http://acm.nyist.net/JudgeOnline/problem.php?pid=306 Dr.Kong设计的机器人卡多非常爱玩.它经常偷偷跑出实验室,在某个游乐场玩之不 ...

  5. HDU 2102 A计划(BFS/DFS走迷宫)

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. 百炼3752:走迷宫--栈实现dfs

    3752:走迷宫 总时间限制:  1000ms 内存限制:  65536kB 描述 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走.给定一个迷宫,求从左上角走到右下角最 ...

  7. SDUT-2449_数据结构实验之栈与队列十:走迷宫

    数据结构实验之栈与队列十:走迷宫 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个由n * m 个格子组成的迷宫,起 ...

  8. LeetCode 79,这道走迷宫问题为什么不能用宽搜呢?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第48篇文章,我们一起来看看LeetCode当中的第79题,搜索单词(Word Search). 这一题官方给的难 ...

  9. 洛谷P1238 走迷宫

    洛谷1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个 ...

随机推荐

  1. UICollectionView + AFNetWorking 异步加载,局部刷新.

    最近在做的项目需要cell里面的数据需要和后台实时交互.而collectionview reload会整体刷新. //m层 发送通知 [[NSNotificationCenter defaultCen ...

  2. 在Coding.net创建项目开发

    先在Coding上创建个项目 只要建个项目推送代码余额就会增加,积累码币可以在商城里兑换相应的商品.为了码币,我也应该建个项目搞搞啊-  记录下过程. 先在Coding上创建个项目   现在是这样,我 ...

  3. java对txt文件内容追加

    package com.test; import java.io.FileOutputStream; /** * 对txt文件在文本追加内容 * @author Wdnncey * */ public ...

  4. TortoiseGit 添加邮箱 失败保存配置

    解决方法   将保存至改为此版本库

  5. jQuery调用后台方法

    前台: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.as ...

  6. ThinkPHP 知识点链接

    1.Thinkphp3.2 行为扩展和插件(Hook)       http://www.thinkphp.cn/topic/21323.html 2.ThinkPHP3.1.3的单字母函数汇总   ...

  7. 不懂点CAP理论,你好意思说你是做分布式的吗?

  8. C#之键值对

    1.初始化一个键值对 //初始化定义一个键值对,注意最后的括号 Dictionary<int, string> dic = new Dictionary<int, string> ...

  9. Qt QThread 多线程使用

    一.继承QThread 使用方法 1.创建个继承QThread的类. #ifndef MYTHREAD_H #define MYTHREAD_H #include <QObject> #i ...

  10. Es6 学习笔记

    变量 let let用来声明变量,作用和var类似,所声明的变量只在let生命的代码块内有效. //1.不允许重复声明 let num = 2; let num = 3; //error //2.块级 ...