gpt4 book ai didi

c - KTouring递归代码

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:51 25 4
gpt4 key购买 nike

我似乎无法找到为什么输出中仍然有一些 -1。我应该怎么做才能让它占据所有空间。我仔细检查了流程,但我认为问题是当我在 main 中调用位置为 (0,0) 的函数时。但是如果位置 (0,0) 上没有解决方案,递归函数本身不会找到替代解决方案吗?帮助表示赞赏。

#define N 8
#include<stdio.h>
#include<stdlib.h>

int xMove[8] = {1,1,-1,-1,2,2,-2,-2};
int yMove[8] = {2,-2,2,-2,1,-1,1,-1};

int isSafe(int x, int y, int board[N][N])
{
if(x >= 0 && x < N && y >= 0 && y < N && board[x][y] == -1)
return 1;
else
return 0;
}

int SolveKT(int x, int y, int imove, int board[N][N])
{
int next_x, next_y, i;

if(imove == N * N)
return 1;

for(i = 0;i < N; i++)
{
next_x = x+xMove[i];
next_y = y+yMove[i];

if(isSafe(next_x,next_y,board))
{
board[next_x][next_y]=imove;

if(SolveKT(next_x,next_y,++imove,board))
return 1;
else
board[next_x][next_y]=-1;
}//close if
}//close for

return 0;
}//close SolveKT

int main()
{
int i,j,res,cboard[N][N]={[0 ... N-1][0 ... N-1]=-1};
res = SolveKT(0,0,0,cboard);

if(res)
{
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",cboard[i][j]);
printf("\n");
}
}

return 0;
}//close main

最佳答案

而不是使用++imove,你应该使用imove+1,因为你不应该改变函数中的变量imove .

但是,这个算法非常非常慢,你应该重新考虑一下。

关于c - KTouring递归代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com