马在中国象棋以日字形规则移动。

请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。

Input

第一行为整数T(T < 10),表示测试数据组数。

每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0<=x<=n-1,0<=y<=m-1, m < 10, n < 10)

Output

每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。

Sample

Inputcopy

Outputcopy

1

5 4 0 0

32

#include<iostream>
#include<algorithm>
using namespace std;
int n,m,t,tot,ans,x,y;
int vis[15][15];
int px[15]={1,1,2,2,-1,-1,-2,-2};
int py[15]={2,-2,1,-1,2,-2,1,-1};
void bfs(int x,int y,int tot)
{if(tot==n*m)
{ans++;
return;
}
for(int i=0;i<8;i++)
{
int a=x+px[i];
int b=y+py[i];
if(a>=0&&a<n&&b>=0&&b<m&&!vis[a][b])//0开始,所以要小于n.
{vis[x][y]=1;//x,y的原因是,出发的那步被标记,因为出发和落脚成功了,出发点才算。
bfs(a,b,tot+1);
vis[x][y]=0;
}
}}
int main()
{cin>>t;
while(t--)
{cin>>n>>m>>x>>y;
bfs(x,y,1);
cout<<ans<<endl;
ans=0;
}
}

马走日-深搜回溯-超好懂题解相关推荐

  1. 百练_4123 马走日(深搜)

    描述 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入 第一行为整数T ...

  2. Openjudge 8465 马走日

    马走日 链接 经典回溯题目 给出棋盘和初始坐标 问这个马有多少种方法遍历整个棋盘 思路 从初始点开始遍历每一个方向  并查看新点有没有被遍历过 如果没有就走出一步并在这一步继续搜 搜完需要回溯(恢复搜 ...

  3. 马走日(深搜 C++)

    马走日 总时间限制: 1000ms 内存限制: 1024kB 描述 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点, ...

  4. 马走日(DFS深搜)

    马走日 目录 马走日 题意描述:给多组数据,给棋盘的大小和马的初始位置,求有多少种方法让马走日全部走过棋盘,不能重复走棋盘的同一个点 解题思路:利用数组来对所有的棋盘上所有的点初始化表示未走过,把马的 ...

  5. 【密码岛OJ】1753 马走日题解

    作为一名密码岛码农,出道深搜 马走日是一道典型的深搜题,主要找准方向再判断日字形就完了 上代码 第一次写题解 不是很熟练 马走日的主要思路就是先定义两个方向数组,然后开一个dfs 求累加和 如果属于日 ...

  6. 信息学奥赛一本通(1219:马走日)

    1219:马走日 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 12078     通过数: 6316 [题目描述] 马在中国象棋以日字形规则移动. 请编写一段程 ...

  7. GDUT - 专题学习1 C - 马走日

    C - 马走日 题目 马在中国象棋以日字形规则移动. 请编写一段程序,给定 n×m 大小的棋盘,以及马的初始位置 (x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. ...

  8. 马走日的解法(dfs)

    马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. Input 第一行为整数T ...

  9. 算法提高课-搜索-DFS之搜索顺序-AcWing 1116. 马走日:dfs

    题目分析 来源:acwing 分析: dfs分两类,一类是内部搜索,不需要恢复现场:一类是外部搜索(以整个图作为状态),需要恢复现场.这里的马走日就是状态图,需要恢复现场. 理清dfs,需要画一个搜索 ...

最新文章

  1. 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
  2. python codecs模块
  3. Python的map方法的应用
  4. vs code 添加jquery的智能提示
  5. oracle学习--循环语句
  6. catia中sew的用法_CATIA超级副本(PowerCopy)使用方法总结 | 坐倚北风
  7. Flink – JobManager.submitJob
  8. 能提升你的东西,都不在舒适区
  9. sql server 与 oracle 的不同,第一感觉。
  10. Oracle分页查询与RowNum
  11. Illegal characters found in URL
  12. 2009年:国内常见的PKM工具软件介绍
  13. 【嵌入式】基于SPI的M8266WIFI模块调试
  14. DB2新建用户及数据库过程
  15. root 存档位置 linux,Linux 档案与目录管理(转)
  16. 计算机网络知识点及例题总结(五)数据链路层与局域网
  17. [转]solaris 10 使用手册
  18. 普通的程序员每天都做什么,资深程序员带你了解行业内幕
  19. pika详解 (一)
  20. VHDL设计一个同步清零的JK触发器

热门文章

  1. 用python画熊猫_当熊猫不够用熊猫
  2. 修改时间服务器-域控环境
  3. https ssl(tls)为什么不直接用公钥加密数据?
  4. 什么是市盈率?什么是动态和静态市盈率?
  5. css实现三栏布局(两侧宽度固定,中间自适应)
  6. taro开发微信小程序
  7. SpringBoot使用Redis清除所有缓存
  8. ES客户端更新策略设置(Java)
  9. 免费frp内网穿透配置
  10. 二进制分析实战:x86汇编快速入门