0

我在 Java 中使用一种方法,但我也希望在 C# 中使用它。它用于判断 int 矩阵是否可传递。

static boolean isTransitive(boolean[][] matrix) {
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix.length; j++) {
            if (matrix[i][j]) {
                for (int k = 0; k < matrix.length; k++) {
                    if (matrix[j][k] && !matrix[i][k]) {
                        return false;
                    }
                }
            }
        }
    }
    return true;
}

我的主要问题是,我不知道 C# 中的 matrix[i][j] 是什么意思?

代码是否可以使用这个 4x4 的 int 数组?

transNumbers[0, 0] = 0;
transNumbers[0, 1] = 1;
transNumbers[0, 2] = 0;
transNumbers[0, 3] = 0;
transNumbers[1, 0] = 1;
transNumbers[1, 1] = 0;
transNumbers[1, 2] = 1;
transNumbers[1, 3] = 0;
transNumbers[2, 0] = 0;
transNumbers[2, 1] = 0;
transNumbers[2, 2] = 0;
transNumbers[2, 3] = 1;
transNumbers[3, 0] = 0;
transNumbers[3, 1] = 0;
transNumbers[3, 2] = 0;
transNumbers[3, 3] = 0;
4

5 回答 5

0

matrix[i][j] 在 C# 中的含义与在 Java 中的含义完全相同。

也就是说,您的矩阵似乎是布尔矩阵,而不是您描述的整数矩阵!

于 2012-06-03T14:24:59.697 回答
0

多维数组在 C# 中使用 , 每维定义。

例如

int[,] test = new int[list1.Count, list2.Count]

http://bytes.com/topic/c-sharp/answers/531671-array-matrix-definition

于 2012-06-03T14:26:31.707 回答
0

由于您使用的是boolean矩阵,因此if (matrix[i][j])在您的代码中意味着boolean该特定索引处的元素[i][j]是否为真。

更简单地分解它:

考虑一个数组:

[1][2][3]

[4][5][6]

[7][8][9]

每个元素都可以通过它的索引来访问。因此,假设元素 5 具有索引[1][1]。(请记住,索引从 0 开始,而不是 1)。

i并且您可以使用和j在您的情况下使用变量来遍历引用您的索引的数组。

于 2012-06-03T14:26:49.990 回答
0

只是代替 [][] 像 [I,j] 一样使用它。其余的代码都很好。

于 2012-06-03T14:29:17.487 回答
0

要将您的代码翻译成 C#,您所要做的就是替换booleanbool. 这两种语言的其他一切都是相同的。

但是,C# 提供了您可能想要实现的附加功能。其中之一是真实多维数组的存在。它们在单个对象中实现了矩阵的多个维度,而[][]符号实际上是一个锯齿状数组,即数组的数组。

于 2012-06-03T15:35:48.433 回答