1219:马走日

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 12078     通过数: 6316

【题目描述】

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

请编写一段程序,给定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

【分析】

这是深搜的模板题目,值得注意的是,马走日,8个方向的位置。

【参考代码】

#include <stdio.h>
#include <string.h>
#define N 15int n,m;          //棋盘大小
char maps[N][N];  //棋盘数组
int vis[N][N];    //访问数组
int dir[8][2]={{-2,1},{-2,-1},{-1,2},{-1,-2},{2,1},{2,-1},{1,2},{1,-2}};  //方向数组
int cnt;          //遍历棋盘的途径总数 void dfs(int x,int y,int step)
{int i,nx,ny;if(step==n*m){cnt++;return;}for(i=0;i<8;i++){nx=x+dir[i][0];ny=y+dir[i][1];if(nx>=0 && ny>=0 && nx<n && ny<m && !vis[nx][ny]){vis[nx][ny]=1;dfs(nx,ny,step+1);vis[nx][ny]=0;}}
}
int main()
{int t;int x,y;     //初始位置 scanf("%d",&t);while(t--){cnt=0;memset(vis,0,sizeof(vis));scanf("%d%d%d%d",&n,&m,&x,&y);vis[x][y]=1;dfs(x,y,1);printf("%d\n",cnt);}return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1219

信息学奥赛一本通(1219:马走日)相关推荐

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

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

  2. 信息学奥赛一本通 1254:走出迷宫 | OpenJudge NOI 2.5 6264:走出迷宫

    [题目链接] ybt 1254:走出迷宫 OpenJudge NOI 2.5 6264:走出迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 广搜,迷宫问题模板题. 当数据量很小时,用深搜的方法 ...

  3. 信息学奥赛一本通 1252:走迷宫 | OpenJudge NOI 2.5 2753:走迷宫

    [题目链接] ybt 1252:走迷宫 OpenJudge NOI 2.5 2753:走迷宫 [题目考点] 1. 广搜 迷宫问题 [解题思路] 设结构体类型的结点保存位置以及步数,队列中保存的是该结构 ...

  4. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  5. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

  6. 信息学奥赛一本通超详细题解,动画图文题解

    内容来源于微信公众号:大神编程.已经过原文作者授权. 更新时间:2020-11-5 现在开始更新基础算法题. 个人感言:从未见过如此详细的题解,动画.图文结合,适合任何水平的选手.尤其是特别适合自学的 ...

  7. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  8. 【棋盘问题】-马走日

    信息学奥赛一本通(C++版)在线评测系统 解题思路: (1)题目比较好理解,要求遍历所有点的所有方案,那么是典型的DFS+回溯题. (2)由于马的移动规则受限,所以只能按照固定的格式走,按照日字型走的 ...

  9. 信息学奥赛一本通 第五版(C++版)

    信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...

最新文章

  1. java applet js_jsp嵌入java-applet,实现js调用web服务器程序
  2. Java序列化(Serialization)的理解
  3. 谈谈你的GC调优思路?
  4. 大白话 设计模式之虚拟工厂
  5. 无法通过ip地址连接其它电脑的数据库,但是又可以ping通,错的不是配置,而是差了一个步骤
  6. HDU6025 Coprime Sequence —— 前缀和 后缀和
  7. 【C++】指针与引用的区别
  8. layui表格合并单元格多表_layui合并单元格各种办法
  9. 软件测试基础知识整理(详细版)
  10. 某单机斗地主内购破解
  11. Sourcetree中使用cherry-pick
  12. 【Practical】产生不大于N的连续素数序列 —— 埃拉托色尼筛法
  13. 重新定义团队 谷歌的自由精神对所有公司都适用
  14. 小米一代扫地机器人磨损家具_为了以后的众测 篇二:无差评居家神器——Mi 小米 扫地机器人...
  15. Coin Change
  16. Django博客搭建_用户注册1_图片生成
  17. 车载以太网物理层PMA测试和IOP测试属于Layer 1(物理层)
  18. webSevice基础学习
  19. Negative Prompt in Stable Diffusion
  20. 偏最小二乘回归 Matlab

热门文章

  1. 第一章 软件工程概论
  2. Every Woman is beautiful
  3. 一图看懂边缘计算整体架构
  4. 50年后的地球什么样?大数据、AI、量子计算的书单给你答案
  5. linux主机添加discuz伪静态规则,(总结)Nginx下Discuz 7.2伪静态规则设置
  6. 用python当壁纸_使用Python脚本将Bing的每日图片作为桌面的教程
  7. 代码review,瑞出事来了!
  8. 微信公众帐号开发教程第16篇-应用实例之历史上的今天
  9. JMail 应用实践(一)--- 简介用Java程序发送email
  10. 小故事分享:千里马与苍蝇的故事