我的想法:
回溯解决方案,我们通过所有解决方案的树和打印,一旦我们达到目标单元格。我实现了这一点,但我不确定它是否正确或有意义,或者它是否是正确的方法。我在这里发布了代码,如果有人能解释它的错误,我将非常感谢。
递归解决方案,我从起始单元格开始,并从每个相邻单元格递归地找到目标单元格的路径,基本情况是击中目标单元格。
5)有没有更简单的方法来做到这一点?
下面是我的代码,它打印N=4的正确路径数。正确吗?
#define N 4
int counter = 0;
bool legal_move(int x, int y, int array[N+2][N+2]){
bool ret = (array[x][y] == 1);
array[x][y] = 0;
return ret;
}
/*
void print_array(int array[N+2][N+2]){
for(int i = 0; i < N+2; i++){
for(int j = 0; j < N+2; j++)
cout << array[i][j] << " ";
cout << endl;
}
cout << endl << endl;
}
*/
void print_paths(int x, int y, int n, int m, int array[N+2][N+2]){
if(x == n && y == m){
print_array(array);
counter++;
}
else {
int dx = 1;
int dy = 0;
for(int i = 0; i < 4; i++){
if(legal_move(x + dx, y + dy, array)){
print_paths(x + dx, y + dy, n, m, array);
array[x+dx][y+dy] = 1;
}
swap(dx,dy);
if(i == 1)
dx = -dx;
}
}
}
int main(){
int array[N+2][N+2];
for(int i = 1; i < N+1; i++)
for(int j = 1; j < N+1; j++)
array[i][j] = 1;
for(int i = 0; i < N+2; i++)
array[0][i] = array[i][0] = array[N+1][i] = array[i][N+1] = 0;
//print_array(array);
array[1][1] = 0; //Set start cell to be seen.
print_paths(1,1,N,N,array);
cout << counter << endl;
}
我想是同样的想法。
您的代码的问题是您没有实现“但不能正确地访问同一地点两次”。
假设你的机器人从S走到A的某个路径,你现在正在检查是否去A附近的B,测试应该是“机器人以前在当前路径上去过B吗”。但是你所实现的是‘机器人以前是否在任何路径上访问过B’。
我有以下Java代码,可以在图中找到从一个节点到另一个节点的路径,如何修改它,以便显示所有可能的路径。这里只显示了一条路径,它是一个循环? 输出:路径:[1、2、3、4、1] 对于节点1和4之间的路径,正确的输出应该是: 第一条路径:1- 第二条路径:1- 代码:
我正在学习bfs/dfs,并试图解决这个问题。有一个n×n的网格。找到在网格中从源单元格移动到目标单元格所需的路径(不一定是最短路径),并返回这些单元格之间的路径。每个网格单元格都有一个值。我们可以一次向四个方向移动一步:上、下、左、右。我们只能移动到具有相等或较小值的相邻单元格。如果没有移动可能到达目标,则返回无。目标在右下角,起点在左上角 下面是我的解决方案,但似乎结果与输出结果混合在一起。任
我需要在Java中创建一个4 x 4的矩形网格,然后需要这些矩形按顺序更改颜色。 我以前从未做过任何图形工作,只是控制台中的东西。 我开始做一些研究,创建了一个650 x 650的JFrame来放置矩形。之后,我使用了网格布局(GridLayout),并使用窗口创建了一个4 x 4的网格。JButton这是不对的。 我将如何创建矩形?使用for循环来计时动画是否正确? 在stackoverflow
我有一个无向图,我想从一个起始节点列出所有可能的路径。2个节点之间的每个连接在列出的路径中是唯一的,例如,给出以下图表示: 我无法使用现有的算法来完成它,我知道像DFS。任何帮助都将非常感谢。
我正在尝试了解如何使用动态编程解决在网格中查找所有唯一路径的问题: 机器人位于m x n网格的左上角(下图中标记为“开始”)。机器人只能在任何时间点向下或向右移动。机器人正试图到达网格的右下角(下图中标记为“Finish”)。有多少种可能的独特路径? 我正在看这篇文章,我想知道为什么在下面的解决方案中,矩阵被初始化为和,以及为什么在的函数签名中,最后一个参数被初始化为 然后在作者自下而上的解决方案
我不知道该如何解决这个问题。我得到了一个有12个节点A-L的图。17个边缘连接它们。我被告知要找到从A到L的所有路径。我可以遍历一个节点多次,但只能遍历一次边。输出应该打印每个路径和路径总数。 例如,如果只有1个路径。输出应为: 我想一个递归的深度优先搜索函数应该可以解决这个问题,但我就是想不出一个打印每一条路径的方法。例如,如果我的函数找到一个路径ABDL并到达结尾L,它将打印ABDL。然后它回