题目分析

来源:acwing

分析:

  1. dfs分两类,一类是内部搜索,不需要恢复现场;一类是外部搜索(以整个图作为状态),需要恢复现场。这里的马走日就是状态图,需要恢复现场。

  2. 理清dfs,需要画一个搜索树。

马走日的8个方向

int dx[8] = {-1, -2, -2, -1, 1, 2, 2, 1};
int dy[8] = {-2, -1, 1, 2, 2, 1, -1, -2};

ac代码

#include<bits/stdc++.h>
using namespace std;
const int N = 10;
int n, m;
bool st[N][N];
int ans;int dx[8] = {-1, -2, -2, -1, 1, 2, 2, 1};
int dy[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
//第三个参数表示当前在搜第几个数
void dfs(int x, int y, int cnt){// 在搜第n *m 个点if( cnt == n * m){ans ++;return;}st[x][y]= true;for(int i = 0; i < 8; i ++){int a = x + dx[i], b = y + dy[i];if( a < 0 || a >= n || b < 0 || b >= m || st[a][b]) continue;dfs(a, b, cnt + 1); // DFS转移}// 恢复现场st[x][y] = false;
}int main(){int T;cin >> T;while(T--){int x, y;cin >> n>> m >> x >> y;ans = 0;dfs(x, y, 1); // 第三个参数:在搜第几个点cout << ans << endl;}}

题目来源

https://www.acwing.com/problem/content/1118/

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

  1. 算法提高课-图论-有向图的强连通分量-AcWing 367. 学校网络:强连通分量、tarjan算法

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 第一问:通过tarjan算法求出强连通分量并且缩点后,统计入度为0的点的个数p即可. 第二问,至少加几条边才能使图变成强连通分量?这 ...

  2. AcWing算法提高课 Level-3 第二章 搜索

    池塘计数 题目 提交记录 讨论 题解 视频讲解 农夫约翰有一片 N∗M 的矩形土地. 最近,由于降雨的原因,部分土地被水淹没了. 现在用一个字符矩阵来表示他的土地. 每个单元格内,如果包含雨水,则用& ...

  3. 算法提高课-动态规划-树形DP-AcWing 1072. 树的最长路径:dfs写法

    题目分析 来源:acwing 分析: 树的最长直径:距离最远的两个点之间的距离,这里是带边权的情况. 在没有边权(或者边权都是1)的时候,树的直径也是最远两个点的距离. 样例对应的树如下,树的直径= ...

  4. 1116 马走日(dfs之搜索顺序)

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

  5. 算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 强连通图:给定一张有向图.若对于图中任意两个结点x,y,既存在从x到y的路径,也存在从y到x的路径,则称该有向图是"强连通 ...

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

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

  7. 算法——AcWing算法提高课中代码和题解

    文章目录 第一章 动态规划 (完成情况:64/68) 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP 第二章 搜索 ...

  8. 算法提高课——3.10 欧拉路径和欧拉回路

    欧拉路径和欧拉回路 哥尼斯堡七桥问题 以下内容摘自<信息学奥赛一本通·提高篇>. 欧拉回路问题是图论中最古老的问题之一.它诞生于18世纪的欧洲古城哥尼斯堡,普瑞格尔河流经这座城市,人们在两 ...

  9. AcWing算法提高课笔记

    目录 Level2 1.动态规划--从集合角度考虑DP问题 1.1 数字三角形模型 1.1.1摘花生 1.1.2最低通行费 1.1.3方格取数 1.1.4传纸条 1.2 最长上升子序列模型 1.2.1 ...

最新文章

  1. SAP WM 自动创建TO单的JOB运行报错 - Enter the storage unit type - 对策
  2. Exchange 2016 Outlook新建会议时收到提醒邮件
  3. 【RS】Improving Implicit Recommender Systems with View Data - 使用浏览数据提升隐式推荐系统...
  4. c++图形化界面_还能这样用?Linux下如何编译C程序?
  5. 【BLOG】流光映雪
  6. jquery 自动完成 Autocomplete
  7. Kotlin学习笔记20 阶段复习2
  8. nginx + tomcat 架构中,页面跳转,URL不变,网页内容变
  9. Java的图标和由来
  10. vmware连接服务器失败响应时间过长,VMware存储性能问题排错指南
  11. 站长紧急:新站要沉得住气
  12. 全局钩子(hook鼠标键盘消息)
  13. webpack的摇树、拆包、热更新、按需加载等难点
  14. 互联网下半场的网络效应
  15. 基于 PaddleClas 的 SoccerNet 足球 ReID 基线
  16. 如何在html网页中利用css实现动画效果
  17. python操作三大数据库百度云_【python操作三大】下载 - 面包树
  18. SMC气动制图及气动元件配置工具
  19. 配置tomcat环境变量
  20. Python超级玛丽马里奥源代码

热门文章

  1. java标识符的规则等
  2. [bzoj2186]沙拉公主的困惑
  3. 洛谷——P1106 删数问题
  4. Bootstrap源码分析之transition、affix
  5. RunTime 入门
  6. 快速获取Android应用包名和Activity名
  7. 循环查询sql带逗号(,)分隔的数据 以及一对多数据转化为逗号(,)分割数据...
  8. Worksheet.get_Range Method
  9. 如何查看SharePoint未知错误
  10. vuecli3配置webpack_vue CLI3的优化