4123:马走日
总时间限制: 1000ms 内存限制: 1024kB
描述
马在中国象棋以日字形规则移动。

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

输入
第一行为整数T(T < 10),表示测试数据组数。
每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0<=x<=n-1,0<=y<=m-1, m < 10, n < 10)
输出
每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。
样例输入
1
5 4 0 0
样例输出
32

问题链接:Bailian4123 马走日
问题简述:(略)
问题分析:用DFS来解决这个问题,不解释。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* Bailian4123 马走日 */#include <bits/stdc++.h>using namespace std;const int dx[] = {1, 1, -1, -1, 2, 2, -2, -2};
const int dy[] = {2, -2, 2, -2, 1, -1, 1, -1};
const int N = 10;
int vis[N][N];
int n, m, x, y, cnt;void dfs(int step, int x, int y)
{if(step == n * m) cnt++;else {for(int i = 0; i < 8; i++) {int nx = x + dx[i];int ny = y + dy[i];if(nx >= 0 && nx < n && ny >= 0 && ny < m && vis[nx][ny] == 0) {vis[nx][ny] = 1;dfs(step + 1, nx, ny);vis[nx][ny] = 0;}}}
}int main()
{int t;scanf("%d", &t);while(t--) {scanf("%d%d%d%d", &n, &m, &x, &y);memset(vis, 0, sizeof vis);cnt = 0;vis[x][y] = 1;dfs(1, x, y);printf("%d\n", cnt);}return 0;
}

Bailian4123 马走日【DFS】相关推荐

  1. 马走日 DFS c++ 算法解答

    题目: 假设国际象棋棋盘有5*5共25个格子.设计一个程序,使棋子从初始位置开始跳马,需要将棋盘的格子全部都走一遍,每个格子只允许走一次. 问:总共有多少解. 思路: DFS: 将起点作为搜索的起点, ...

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

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

  3. 马走日(DFS深搜)

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

  4. 马走日的解法(dfs)

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

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

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

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

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

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

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

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

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

  9. 信息学奥赛一本通:1219.马走日

    信息学奥赛一本通:1219.马走日 1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7406 通过数: 3863 [题目描述] 马在中国象棋以日字形规则移动. 请 ...

最新文章

  1. 2022-2028年中国绝缘栅双极晶体管(IGBT)行业投资分析及前景预测报告
  2. uniapp同步获取用户信息_微信小程序云开发教程微信小程序的API入门获取用户身份信息系列API...
  3. 剑指offer系列之十:二进制中1的个数
  4. 解决小米手机缩放窗口问题
  5. opencv 显示图片(直接)
  6. mac 下 通过 brew 安装 MariaDB
  7. 大数据数据量估算_如何估算数据科学项目的数据收集成本
  8. Java多线程实现异步调用
  9. 系统新模块增加需要哪些步骤_想要吸引人流,儿童乐园需要增加哪些新设备呢...
  10. 详述 hosts 文件的作用及修改 hosts 文件的方法
  11. 今晚直播丨用高效的Oracle性能诊断工具,让运维工作轻松起来!
  12. 浮点数的表示,和IEEE754规范化表示
  13. [转]十个让你变成糟糕的程序员的行为
  14. MyBatis 动态 SQL(认真看看, 以后写 SQL 就爽多了)
  15. unity物体移动的几种常用方式
  16. Tomcat配置SSL证书实现https(内网ip访问)
  17. Excel2010无法保存提示检测到错误
  18. 「分布式系统之美」知乎圆桌精选大放送第二期|不要放过任何你感兴趣的话题
  19. IG痛失亚军,含泪夺冠,奖杯是用区块链的技术合成的你知道吗
  20. Spring Boot集成Druid异常discard long time none received connection.

热门文章

  1. 原始套接字AF_PACKET用法尝试
  2. 设计模式(一)----简单工厂、工厂方法和抽象工厂区别
  3. 基于VUE2.0的分页插件
  4. C#中常用的文件操作方法
  5. Hive的三种建表方式
  6. SpringBoot+Vue项目上手
  7. Python 之面向对象 继承
  8. sparksql读取mysql表的两种方式
  9. java 字符串递归_关于java:递归函数以通配符模式匹配字符串
  10. linux 安装 xpdf csdn,Centos安装xpdf 解析pdf文件