就像伪代码甚至看起来一样?我知道什么是水槽,并认为我可以告诉你这个过程确定一个。但是,我如何表示矩阵及其行和列?感谢。
答案 0 :(得分:0)
在Java中,您可以声明一个2d的布尔值矩阵,如下所示:
final int ROWS = 8;
final int COLS = 8;
boolean matrix[][] = new boolean[ROWS][COLS];
然后用一些数据填充矩阵:
for (int i=0; i < ROWS; i++)
for (int j=0; j < COLS; j++)
matrix[i][j] = true; //(false if no edge from element i to element j)
然后你可以使用与填充它相同的嵌套for循环结构迭代矩阵:
for (int i=0; i < ROWS; i++)
for (int j=0; j < COLS; j++)
//matrix[i][j] is row i, column j
在n
行和m
列的任何矩阵中一直迭代的运行时间为 O(nm)
对于您,因为您正在构建邻接矩阵,ROWS
和COLS
将是相同的值,因此您只需使用ROWS
两次。外部循环遍历每一行,而内部循环遍历每一列,因此它将检查从节点0到节点0,节点1,节点2,节点3等的边缘。
然后它将检查从节点1到节点0,节点1,节点2等的边缘。(注意我们如何以这种方式检查边缘)
因为ROWS和COLS的值相同,所以您的运行时间实际上是 O(n 2 )
使用更保守的表示图表的方法可以做得更好。
编辑:
您寻找接收器的伪代码可能类似于以下内容:
我已经向您展示了如何创建和迭代邻接列表,现在您认为您可以查找如何满足第一个项目符号列表的要求吗?