中国象棋马走日 — 递归
1 //在半个中国象棋棋盘上,马在左下角(1,1)处,马走日字, 2 //而且只能往右走...不能向左...可上可下...求从起点到(m, n)处有 3 //几种不同的走法(函数的递归调用) 4 5 #include<stdio.h> 6 #include<stdlib.h> 7 8 int horse(int x1,int y1,int x2,int y2); 9 int main() 10 { 11 char ch; 12 while(ch != EOF) 13 { 14 int m,n; 15 printf("请输入目的地址,用英文逗号隔开,如2,3:\n"); 16 if(scanf("%d,%d",&m,&n) < 2) 17 printf("输入有不全,请重新输入!\n"); 18 else if(m>9||m<1||n>5||n<1) 19 printf("输入有误,请重新输入!\n"); 20 else 21 printf("结果为:%d",horse(1,1,m,n)); 22 printf("\n输入ctrl+z退出,任意键继续\n"); 23 getchar(); 24 ch = getchar(); 25 system("cls"); 26 } 27 return 0; 28 } 29 30 //走马的实现 31 int horse(int x1,int y1,int x2,int y2) 32 { 33 //在这个算法中,目的地不变,在变的一直是起点,递归有两个出口,一个返回0(表示找不到),一个返回1(表示找到)。 34 int result = 0; 35 if( x1 > x2 || x1==x2 && y1 != y2) //x1 > x2 表示已经往左边走, 36 return 0; //x1==x2 && y1 != y2 表示已在同一竖线上,但横线不重合,注定走不到一起。 37 else if(x1==x2 && y1==y2) 38 return 1; 39 else 40 { 41 //每一个点有“四种”走法,每一个起点都递归调用。 42 //注意到x1只能 + ,因为只能往右走。 43 if(x1+2<=9 && y1+1<=5) 44 result += horse(x1+2,y1+1,x2,y2); 45 if(x1+1<=9 && y1+2<=5) 46 result += horse(x1+1,y1+2,x2,y2); 47 if(x1+2<=9 && y1-1>=1) 48 result += horse(x1+2,y1-1,x2,y2); 49 if(x1+1<=9 && y1-2>=1) 50 result += horse(x1+1,y1-2,x2,y2); 51 //所有递归调用回溯之后,得到一个总的result,即步数。 52 return result; 53 } 54 }
转载于:https://www.cnblogs.com/houjun/p/6507692.html
中国象棋马走日 — 递归相关推荐
- 马走日(深搜 C++)
马走日 总时间限制: 1000ms 内存限制: 1024kB 描述 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点, ...
- 信息学奥赛一本通(1219:马走日)
1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 12078 通过数: 6316 [题目描述] 马在中国象棋以日字形规则移动. 请编写一段程 ...
- 马走日程序Java_马走日什么意思
中国象棋在中国有着三千多年的历史,在中国古代,象棋被列为士大夫们的修身之艺,属于琴棋书画四艺之一.现在则被视为是怡神益智的一种有益身心的活动. 中国象棋是由两人轮流走子,以"将死" ...
- Bailian4123 马走日【DFS】
4123:马走日 总时间限制: 1000ms 内存限制: 1024kB 描述 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的 ...
- GDUT - 专题学习1 C - 马走日
C - 马走日 题目 马在中国象棋以日字形规则移动. 请编写一段程序,给定 n×m 大小的棋盘,以及马的初始位置 (x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. ...
- 马走日(DFS深搜)
马走日 目录 马走日 题意描述:给多组数据,给棋盘的大小和马的初始位置,求有多少种方法让马走日全部走过棋盘,不能重复走棋盘的同一个点 解题思路:利用数组来对所有的棋盘上所有的点初始化表示未走过,把马的 ...
- 马走日的解法(dfs)
马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. Input 第一行为整数T ...
- 马走日 java实现
马走日 问题描述: 在中国象棋里,马的走棋要遵循"马走日"的规则,在本题中,给定马的起始位置,以及一个目标位置,判定该马是否能够走到该位置,如果能走到,最少步数是多少.(假设棋盘上 ...
- 信息学奥赛一本通:1219.马走日
信息学奥赛一本通:1219.马走日 1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7406 通过数: 3863 [题目描述] 马在中国象棋以日字形规则移动. 请 ...
- 【简洁,易懂程式】C - 马走日
[简洁,易懂程式]C - 马走日 题目: 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y), 要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历 ...
最新文章
- 【Interfacenavigation】XML中的字体(27)
- 三层架构 || SpringMVC 和 Struts2 的优略分析
- hdfs user 连接_Python入门操作HDFS
- 最新最全的视觉Transformer教程!论文分析 + 逐行Coding,带你轻松玩转ViT
- 她把肥皂放在矿泉水瓶盖上,第二天大吃一惊...…
- android 实现仿QQ登录可编辑下拉菜单
- POJ - 3450 Corporate Identity(二分+后缀数组)
- linux http 分析工具,技术|httpstat:一个检查网站性能的 curl 统计分析工具
- JSP的隐含对象/隐藏对象/内置对象介绍
- IDEA中如何新建一个带有-P目录的项目
- [Leetcode][第93题][JAVA][复原IP地址][剪枝][回溯]
- MVC模式 与 Model2模型 介绍
- [导入]热烈祝贺实时数据库行业协会成立!
- 2020年Java学习计划祝大家新年快乐
- 微型计算机原理与接口技术第二版答案邹逢兴,清华大学出版社-图书详情-《微型计算机原理与接口技术教学辅导(第2版)》...
- html转换为pdf的笔顺,笔顺正确写法,很全面.pdf
- 使用深度学习和物理约束求解偏微分方程
- 只有英语四级和计算机二级,通过英语四级和计算机二级用英语怎么说
- GTX 1070Ti正式发布!iGame Vulcan X家族再添新成员
- 如何阅读论文?读论文的三个层次
热门文章
- CSDN调整图片大小
- 博士申请 | 香港大学计算机科学系黄超老师招收2022年入学全奖博士生
- 【Debug记录】Libtorch部署YOLO时cmake报错--symbol lookup error: ./test/test: undefined symbol: _ZN2at6detail1
- 计算机课程设计答辩评语,课程设计评语模板.doc
- 如何不用电脑安装ipa
- 笔记本打开计算机,笔记本打开黑屏怎么办_笔记本电脑开机黑屏的解决步骤-win7之家...
- 火影 超神V5笔记本键盘维修
- 阿里云历时13年,站上世界现代计算架构之巅
- 谷歌访问英文网站翻译为中文
- mysql中str_to_date函数和date_format函数和now函数