在半个中国象棋棋盘上,马在左下角(1,1)处,马走日字,求到指定位置有多少种走法
来源:互联网 发布:苹果应用下载软件 编辑:程序博客网 时间:2024/06/05 08:27
在半个中国象棋棋盘上,马在左下角(1,1)处,马走日字…而且只能往右走…不能向左…可上可下…求从起点到(m, n)处有几种不同的走法。
分析:
半个中国象棋棋盘可用二维数组来表示:static int chessboard[5][9];
能走的方向用数组来表示:
const int dx[4] = {2, 1, -1, -2};
const int dy[4] = {1, 2, 2, 1};
#include<iostream>using namespace std;static int chessboard[5][9];static int count=0;/*马走日的方向,(dx, dy),dx表示5行中的第几行的竖直方向,dy表示9列中第几列的横方向。上:(2, 1)上右:(1, 2)下右:(-1, 2)下: (-2, 1)*/const int dx[4] = {2, 1, -1, -2};const int dy[4] = {1, 2, 2, 1};void horse_count(int srcx, int srcy, int destx, int desty){ if(srcx>=0 && srcx<5 && srcy>=0 && srcy<9 && chessboard[srcx][srcy]==0) { if(srcx == destx-1 && srcy == desty-1) { count++; return; } //标记为已经走过 chessboard[srcx][srcy] = 1; int i; for(i=0; i<4; ++i) { horse_count(srcx+dx[i], srcy+dy[i], destx, desty); } //当走完四个方向后,回溯到之前走过的一步,标记为未走过。 chessboard[srcx][srcy] = 0; }}int main(){ cout<<"请输入要到达棋盘的坐标: "; int m, n; cin>>m>>n; horse_count(0, 0, m, n); cout<<"走法的种数:"<<count<<endl; return 0;}
0 0
- 在半个中国象棋棋盘上,马在左下角(1,1)处,马走日字,求到指定位置有多少种走法
- 搜狗笔试题目:4*5的棋盘,在左下角的格子移动到右上角的格子,求有多少种移动方法
- 搜狗笔试题目:4*5的棋盘,在左下角的格子移动到右上角的格子,求有多少种移动方法
- 搜狗笔试题目:4*5的棋盘,在左下角的格子移动到右上角的格子,求有多少种移动方法
- 搜狗笔试题目:4*5的棋盘,在左下角的格子移动到右上角的格子,求有多少种移动方法
- 一个8*8的方格子,A点在左下角,B点在右上角,求A点到B点的最短路径有多少条
- 03 在百度地图上定位到指定位置
- 一个M * N的方格,从左下角走到右上角有多少种走法?
- RecyclerView滑动到指定位置,并指定位置在顶部
- 求整数 在二进制表示中有多少个1的方法
- popupWindow 在指定位置上的显示
- popupWindow 在指定位置上的显示
- popupWindow 在指定位置上的显示
- popupWindow 在指定位置上的显示
- popupWindow 在指定位置上的显示
- 求从0到n一共有多少个1
- 求在m*n矩阵当中,从左上角出发到右下角有多少种方法
- 在IOS系统上,滚动条滚动到指定的位置出现空白页面的解决方案
- LeetCode #1 Two Sum
- 2017.02.24 Javascript 面向对象编程1--封装
- sizeof计算类的大小
- JSONObject与JSONArray
- LeetCode 1. Two Sum
- 在半个中国象棋棋盘上,马在左下角(1,1)处,马走日字,求到指定位置有多少种走法
- PAT甲级1014. Waiting in Line (30)
- MPEG-2 TS学习(六)tsfilter源码阅读(3)TS的解析流程
- C++ 实现反射(一)
- 彼岸书店小览
- 26. Remove Duplicates from Sorted Array
- 274. H-Index
- Android 中为RecyclerView控件添加分隔线
- XML和JSON分别是什么?JSON有什么好处?