作业帮 > 综合 > 作业

马的走法C语言算法半张中国象棋棋盘,即5×9棋盘,左上角记为A(1,1),求从A点的马,只能向右行走,走到点B(m,n)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/28 22:11:07
马的走法C语言算法
半张中国象棋棋盘,即5×9棋盘,左上角记为A(1,1),求从A点的马,只能向右行走,走到点B(m,n)的走法一共有多少种.
#include
/*
* 求(x1,y1)向右走到(y1,y2)可行的走法总数
*/
int getWays(int x1, int y1, int x2, int y2)
{
if(y1 > y2) //在目标右边
return 0;
else if(y1 == y2 && x1 != x2) //在目标一条垂直线上,但不是同一点
return 0;
else if(y1 == y2 && x1 == x2) //跟目标是同一点
return 1;
else{ //分治,求四种走法的总和
int result =0;
if(x1 > 1) //可以上1
result += getWays(x1 - 1, y1 + 2, x2, y2);
if(x1 > 2) //可以上2
result += getWays(x1 - 2, y1 + 1, x2, y2);
if(x1 < 5) //可以下1
result += getWays(x1 + 1, y1 + 2, x2, y2);
if(x1 < 4) //可以下2
result += getWays(x1 + 2, y1 + 1, x2, y2);
return result;
}
}
void main(void)
{
int x,y; //目标坐标

printf("请输入目标坐标:\n");
scanf("%d%d", &x, &y);
printf("总的不同走法:%d\n",getWays(1, 1, x, y));
}
不明白,再交流...
马的走法C语言算法半张中国象棋棋盘,即5×9棋盘,左上角记为A(1,1),求从A点的马,只能向右行走,走到点B(m,n) 过河卒救急棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有一个对方的马,该 【问题描述】棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有一个对方的马, 如图1是一副中国象棋棋盘,马走“日”字.若棋盘上每个小方格都是边长为5CM的正方形,那么“马”连跳三步 右图是中国象棋的棋盘,盘中马在(0,1)的位置.跟据中国象棋的规定,“马”只许走“日”字. 下面是中国象棋的棋盘,盘中“马”在(1,0)的位置.根据中国象棋的规则,“马”只许走“日”字.要到(5,7) 一只蚂蚁在一张棋盘的一条直线上爬行,规定向右为正方向,第一次它从A点向右爬了1个 一只蚂蚁在一张棋盘的一条直线上爬行,规定向右为正方向,第一次它从A点向右爬了1个单 中国象棋中,“马”跳“日”字,“象”飞“田”字.如果棋盘上小正方形的边长为1棋盘上小正方形的边长为1 中国象棋棋盘中蕴含着直角坐标系,右上图是中国象棋棋盘的一半,棋子“马”走的规则是沿“日”形的对角线走,例如:图中“马”所 初中数学(平面直角坐标系)问题:中国象棋中的马能不能走到棋盘中的任何一个位子?为什么? 如图是中国象棋棋盘的一部分,在这部分棋盘上有一只马,按规定马应走日字,请问这只马能否用2010步走到棋盘A点?