gpt4 book ai didi

c - 解决迷宫问题的C程序

转载 作者:行者123 更新时间:2023-12-02 04:23:23 25 4
gpt4 key购买 nike

<分区>

我必须编写一个程序来读取区间 [1,30] 上的数字 M 和 N 以及由 M X N 单元格(M 行和 N 列)组成的迷宫,并打印出从左上角单元格到底部的路径右侧单元格。

示例输入:

4 3  
1101 0110 1110
1110 1001 0010
1000 0101 0011
1001 0101 0111

细胞和它的墙壁用四个 1 或 0 来描述,1 表示墙壁存在,0 表示墙壁不存在并且我们可以穿过。第一个数字告诉我们左壁是否存在,第二个数字告诉我们上壁是否存在,第三个数字告诉我们右壁是否存在,第四个数字告诉我们下壁是否存在。

所以上面的 map 看起来像这样:

+---+---+---+
| | |
+---+ + +
| | |
+ +---+ +
| |
+ +---+---+
| |
+---+---+---+

路径被描述为数字 0(左)、1(向上)、2(右)和 3(向下)的序列,中间没有空格,因此上述路径的解是“232300322”。

到目前为止,我已经能够将迷宫放入二维字符数组中,如下所示,但我不确定如何从这里继续。我有一个想法,使用一个名为 bool areWeThereYet() 的递归函数,如果我们已经结束,它会返回 true,但我不确定这是否是正确的方法,因为我不确定如何正确实现它,所以它打印出路径。

我还必须提一下,所有测试用例中只有一条正确路径。

我请求有人指导我解决这个问题,我将感谢我收到的所有帮助。

    int rows,columns;

scanf("%d%d",&rows,&columns);
char currentChar;
char labyrinth[rows][columns * 4];

for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns * 4; j++){
currentChar = getchar();
if(currentChar == ' ' || currentChar == '\n'){
currentChar = getchar();
}
labyrinth[i][j] = currentChar;
}
}

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