gpt4 book ai didi

c - 使用递归找到二维迷宫路径。段故障。 C

转载 作者:行者123 更新时间:2023-11-30 15:42:03 26 4
gpt4 key购买 nike

我在完成该程序时遇到问题。作业是使用递归找到一条穿过由 X 和 O 组成的迷宫的路径。可以通过的路径由 O 指定。迷宫存储为文本文件。

这是一个示例迷宫:

XOXXXXXX
XOXXXXXX
XOOOOXXX
XXXXOXXX
XXXXOOXX
XXXXXOXX
XXXXXOOO
XXXXXXXO

这是我附加的代码。我附上了我的所有代码,但我不想被告知具体如何做,我来这里是为了学习:-)。我确实相信我的问题是没有考虑到我刚刚寻找的相同的 O,但是我不是100%确定。谢谢!!

    #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int find_path(char maze[8][8], int coorx, int coory);

int main(int argc, char *argv[])
{
char maze[8][8];
int i=0,j=0;

FILE *fp;
fp = fopen(argv[1], "r");
for(i=0;i<9;i++)
for(j=0;j<9;j++)
fscanf(fp,"%c",&maze[i][j]);
fclose(fp);
printf("%c", maze[2][3]);
return 0;
}

int find_path(char maze[8][8], int coorx, int coory)
{
//if((maze[coorx][coory]!= 'O') && (coorx >=0) && (coorx < 8) && (coory >=0) &&
//(coorx < 8)){
if(find_path(maze, coorx + 1, coory) == 'O'){
printf("(%d,%d)",coorx, coory);
}
else if(find_path(maze, coorx - 1, coory) == 'O'){
printf("(%d,%d)",coorx, coory);
}
else if(find_path(maze, coorx, coory + 1) == 'O'){
printf("(%d,%d)",coorx, coory);
}
else if(find_path(maze, coorx, coory - 1) == 'O'){
printf("(%d,%d)",coorx, coory);
}

return 0;
}

最佳答案

您有此声明

char maze[8][8];

像这样循环

for(i=0;i<9;i++)

也就是说,您从零循环到八(含),即索引。对于只有八个条目的数组。

这意味着您将超出数组范围,导致未定义的行为。

更改循环条件,或增加数组大小。

关于c - 使用递归找到二维迷宫路径。段故障。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20345250/

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