此题链接单击这里
=================
这题刚做的时候并不知道马是怎么走的。。。。。。表示象棋玩的少。。。。。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
char c3, c4;
int k;
int c[127][127];
int b1[8] = { 1, 1, -1, -1, 2, 2, -2, -2 };
int b2[8] = { 2, -2, 2, -2, 1, -1, 1, -1 };
bool is1(char c1, char c2)
{
if (c1 >= 'a'&&c1 <= 'h' &&c2 >= '1'&&c2 <= '8')
return true;
else
return false;
}
void funt(char c1, char c2, int kc)
{
if (kc >= k)
return;
if (c1 == c3&&c2 == c4&&kc < k)
{
k = kc;
return;
}
for (int i = 0; i < 8; i++)
{
char cb1 = c1 + b1[i];
char cb2 = c2 + b2[i];
if (is1(cb1, cb2))
if (c[cb1][cb2] != 1)
{
c[cb1][cb2] = 1;
funt(cb1, cb2, kc + 1);
c[cb1][cb2] = 0;
}
}
}
int main()
{
char c1, c2;
while (cin >> c1 >> c2 >> c3 >> c4)
{
memset(c, 0, sizeof(c));
k = 6;
funt(c1, c2, 0);
printf("To get from %c%c to %c%c takes %d knight moves.\n", c1, c2, c3, c4, k);
}
}
有问题联系企鹅791267032
邮箱地址….wutanrong@Hotmail.com