我在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#中的矩阵[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;
答案 0 :(得分:0)
matrix [i] [j]在C#中与在Java中完全相同。
那就是说,你的矩阵似乎是一个布尔矩阵,而不是你描述的整数!
答案 1 :(得分:0)
多维数组在C#中定义为每个维度。
例如
int[,] test = new int[list1.Count, list2.Count]
http://bytes.com/topic/c-sharp/answers/531671-array-matrix-definition
答案 2 :(得分:0)
由于您使用的是boolean
矩阵,因此代码中的if (matrix[i][j])
表示该特定索引boolean
的{{1}}元素是否为真。
更简单地分解:
考虑一个数组:
[i][j]
可以使用索引访问每个元素。所以,假设元素5的索引为[1][2][3]
[4][5][6]
[7][8][9]
。(请记住,索引从0开始,而不是1)。
您可以使用[1][1]
和i
等变量来迭代引用索引的数组。
答案 3 :(得分:0)
而不是[] []使用它像[I,j]。其余的代码很好。
答案 4 :(得分:0)
要将您的代码翻译为C#,您只需将boolean
替换为bool
即可。其他所有语言都是相同的。
但是,C#提供了您可能想要实现的其他功能。其中之一是存在真正的多维数组。它们在单个对象中实现矩阵的几个维度,而[][]
表示法实际上是一个锯齿状数组,即数组数组。