用c++编中国象棋跳马问题

输入起始坐标和终点坐标,输出所有方法和方法的种数。谢谢!请给我源代码,谢谢!... 输入起始坐标和终点坐标,输出所有方法和方法的种数。
谢谢!
请给我源代码,谢谢!
展开
 我来答
地鼠的日记
推荐于2016-04-20
知道答主
回答量:12
采纳率:0%
帮助的人:6.5万
展开全部
#include <cstdlib>
#include <iostream>

using namespace std;

int s[15][15];
int x, y;
int a[15][15];
int s1, s2;
int e1, e2;
int i, j, k;
int m;

void dfs(int x, int y, int m)
{
if (m > a[x][y]) return;
s[x][y] = 10;
a[x][y] = m;
if (s[x][y] == 5)
return;
dfs(x + 2, y + 1, m++);
dfs(x + 2, y - 1, m++);
dfs(x - 2, y + 1, m++);
dfs(x - 2, y - 1, m++);
dfs(x + 1, y + 2, m++);
dfs(x + 1, y - 2, m++);
dfs(x - 1, y + 2, m++);
dfs(x - 1, y - 2, m++);
return;
}

int main(int argc, char *argv[])
{
cin >> s1 >> s2;
cin >> e1 >> e2;
s1++;
s2++;
e2++;
e1++;
for (i = 0; i <= 15; i++)
for (j = 0; j <= 15; j++)
{
s[i][j] = 10;
a[i][j] = 100;
}
for (i = 2; i <= 12; i++)
for (j = 2; j <= 10; j++)
s[i][j] = 0;
/*
for (i = 0; i <= 15; i++)
{
for (j = 0; j <= 15; j++)
cout << s[i][j] << " ";
cout << endl;
}
*/
s[e1][e2] = 5;
dfs(s1, s2, 1);
cout << a[e1][e2] << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机编程是指使用单片机编程语言,如C语言,来编写单片机的程序代码,以控制单片机的行为。这种技术在电子工程、计算机科学和电子通信等领域中被广泛应用。单片机编程的主要任务是设计和实现单片机的程序,包括定义单片机的指令系统、编写程序代码、处理器... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式