New_C_learner 2018-11-11 15:16 采纳率: 0%
浏览 695

骑士游历C语言版,用类似迷宫算法如下,求大神告知错误的地方。

代码如下:
#include
#define _CRT_SECURE_NO_WARNINGS

int a[8][8] = { 0 };
int success = 0;
int n = 0;
void print_tu();
void step(int i, int j);
void main()
{
step(4, 6);
}
void print_tu()
{
int i, j;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
printf("%d\t", a[i][j]);
printf("\n");
}
}

void step(int i,int j)
{
n = n + 1;
a[i][j] = n;
if (n == 64)
{
success = 1;
print_tu();
}
else
{
if (success != 1 && (i-1>=0)&&(j-2>=0)&&a[i - 1][j - 2] == 0)step(i - 1, j - 2);
if (success != 1 && (i-2>=0)&&(j-1>=0)&&a[i - 2][j - 1] == 0)step(i - 2, j - 1);
if (success != 1 && (i-2>=0)&&(j-1>=0)&&a[i - 2][j - 1] == 0)step(i - 2, j - 1);
if (success != 1 && (i-2>=0)&&(j+1<=7)&&a[i - 2][j + 1] == 0)step(i - 2, j + 1);
if (success != 1 && (i-1>=0)&&(j+2<=7)&&a[i - 1][j + 2] == 0)step(i - 1, j + 2);
if (success != 1 && (i+1<=7)&&(j-2>=0)&&a[i + 1][j - 2] == 0)step(i + 1, j - 2);
if (success != 1 && (i+2<=7)&&(j-1>=0)&&a[i + 2][j - 1] == 0)step(i + 2, j - 1);
if (success != 1 && (i+2<=7)&&(j+1<=7)&&a[i + 2][j + 1] == 0)step(i + 2, j + 1);
if (success != 1 && (i+1<=7)&&(j+2<=7)&&a[i + 1][j + 2] == 0)step(i + 1, j + 2);
if (success != 1)
{
a[i][j] = 0;
n = n - 1;
}
}
}

  • 写回答

1条回答

  • devmiao 2018-11-11 15:51
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体