gpt4 book ai didi

c - 在二维矩阵中使用链表进行 DFS - C

转载 作者:行者123 更新时间:2023-11-30 14:57:33 24 4
gpt4 key购买 nike

我的学校项目有一项我不知道如何解决的任务,但我陷入了困境。我必须跑过这个迷宫:

    #T###########
#.#...R.....#
#.###.#.###.#
#...Q.#...#.#
#.#####C###F#
#.A.........#
#B#####E#K#L#
#.......#.#.#
###D#H###.#.#
#...#...J.P.#
#G###X#####.#
#.........N.#
#############

在这个矩阵中,我必须使用链表找到哪个重要点是其邻居。

这应该是代码的输出:

    A: L K F E C T Q B
B: H E D T Q A
C: L K F E A R F
D: G H E B
E: H D B L K F C A
F: L K E C A R C
G: X N D
H: X J E D B
J: X H P K
K: P J L F E C A
L: P N K F E C A
N: X G P L
P: N L K J
Q: R T B A
R: F C Q
T: Q B A
X: N G J H


int rekurzia(int x,int y)
{
if ((x < 0) || (x > MAX - 1) || (y < 0) || (y > MAX - 1))
return false;
if((matica[x][y] >= 'A') && (matica[x][y] <= 'Z'))
printf("%c\n", matica[x][y]);
if (matica[y][x] != '.' )
return false;
if (rekurzia(x,y-1) == true)
return true;
if (rekurzia(x+1,y) == true)
return true;
if (rekurzia(x,y+1) == true)
return true;
if (rekurzia(x-1,y) == true)
return true;
return false;
}

我做了这样的事情。有人可以帮助我该怎么做吗?谢谢!

最佳答案

这对于学校项目来说是一个 super 具有挑战性的问题!但看起来很有趣!

如果我必须解决这个问题,我会;

  1. 获取每个字母字符的所有地址,以便我知道所有起点在哪里(只需遍历矩阵即可(在循环中循环)
  2. 构造一个递归函数(一个不断调用自身的函数),然后我将允许该函数;
    • 以 4 个 vector (上、下、左、右)生成。
    • 如果函数遇到“#”(墙),它将不返回任何内容并停止,
    • 如果找到“.”走廊它将继续以另外 4 个 vector 延伸,
    • 如果遇到字母字符,则返回该字符。
  3. 对于每个已知的 alpha 位置,调用递归函数并让它“漫游”。
  4. 为了获得额外的分数,您可以使用并行编程来同时启动每个已知位置:)

陷阱:- 留意无休止的电话- 不要漫游越过矩阵的边界

关于c - 在二维矩阵中使用链表进行 DFS - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865893/

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