我正在C计算机编程类,我试图实现一个算法用于骑士的旅游问题。我意识到C没有布尔值,除非你自己设计它们,或者把'0'和'1'设为真和假,并且与它们一致。我决定使用后者,并编译它,但它说:“过程返回26866464 < 0x28FE00>”我从互联网上提供的伪代码编写这个程序,我理解骑士的旅游和这个代码的想法,但我不能真正指出错误究竟是什么。我觉得印刷它的方式有点不对劲。处理返回26866464 <0x28FE00>错误
#include <stdio.h>
#include <stdbool.h>
#define N 5
bool algorithmMove(int x, int y, int m)
{
bool visited[N][N];
visited[N][N] == false;
if (x < 0 || x >= N || y < 0 || y >= N)
{
return false;
}
if (visited[x][y] == true)
{
return false;
}
if (m = (N*N) - 1)
{
printf("A solution has been found");
printf("x, y");
visited[x][y] == true;
return true;
}
else
{
bool result;
result = false;
result = result || algorithmMove(x+2, y+1, m+1);
result = result || algorithmMove(x+2, y-1, m+1);
result = result || algorithmMove(x-2, y+1, m+1);
result = result || algorithmMove(x-2, y-1, m+1);
result = result || algorithmMove(x+1, y+2, m+1);
result = result || algorithmMove(x+1, y-2, m+1);
result = result || algorithmMove(x-1, y+2, m+1);
result = result || algorithmMove(x-1, y-2, m+1);
if (result = true)
{
printf("x, y");
return true;
}
else
{
visited[x][y] == false;
return false;
}
}
}
main()
{
algorithmMove(2, 4, 0);
}
没有,对不起,我会确保到编辑,我有一个问题,但意识到了这个问题并修复了它,并且stackoverflow保存了你以前写的东西,我的错误 – DsDude 2015-01-21 08:40:06
你应该声明你的程序入口点为'int main(void)'并且把'return 0;'作为最后一条语句。另外,在C'='中是赋值,并且将左侧的th变量的值设置为右侧的项目的值,而'=='是对相等性的测试。数组也被索引从0到N-1(而不是1到N)。 – 2015-01-21 08:46:54
如果你在'main'函数中删除或注释掉这行(如果以'//开头'或者在''之前放'''*''''''''''''''')会发生什么?该过程是否仍然返回一个非零值? – 2015-01-21 08:58:56