【发布时间】:2019-06-29 04:47:03
【问题描述】:
我将如何检查列和行的重复项并根据是否存在重复项返回真或假。例如
1 2 3
3 1 2
2 3 1
会返回 true,因为没有重复,但是..
1 2 2
3 2 3
2 1 1
将返回 false,因为第 2 列 {2, 2, 1} 中有重复项。
我将如何检查行中是否存在重复项,然后检查列中是否存在重复项?
我还需要检查每个数字以与同一行和同一列上的其他数字进行比较
到目前为止,我只有以下内容:
for (int row = 0; row < n; row++)
{
for (int col = 0; col < m; col++)
{
Console.WriteLine("Check for: " + arr[row, col]);
for (int i = 1; i < arr.GetLength(1); i++)
{
Console.WriteLine("{0} == {1}", arr[row, col], arr[i, col]);
if (col != i)
{
if (arr[row, col] == arr[i, col])
{
unique = false;
}
}
}
for (int j = 1; j < arr.GetLength(0); j++)
{
Console.WriteLine("{0} == {1}", arr[row, col], arr[row, j]);
if (row != j)
{
if (arr[row, col] == arr[row, j])
{
unique = false;
}
}
}
自 2 天以来,我一直坚持该分配,我不知道如何对最后两个 for 循环进行正确检查。 此外,我应该只使用 for 循环,并且只使用 2d 数组而不是锯齿状或 HashSets 。
提前谢谢你。
嘿,伙计们,大家能够检查每个单行和列中的每个数字,以便在仅使用 for 循环时获得 2d 中的唯一矩阵,您的行和列的 for 循环应该从 0 开始,并且循环取决于对于行,宽度和高度的列,那么最重要的是在 if 语句中,所以当循环开始时并检查检查列的索引和行的索引是否与它检查的数字相同必须继续然后您转到第二个 if 语句,即行或列的索引是否与当前所在的行或列不同,并且行数组和 col == 索引数组,col 或行数组,索引然后矩阵不是唯一的。我也会发布代码,以便您看到最终结果。感谢所有帮助我的人引导我走向正确的方向
for (int row = 0; row < arr.GetLength(0); row++)
{
for (int col = 0; col < arr.GetLength(1); col++)
{
Console.WriteLine("Check for: " + arr[row, col]);
for (int i = 0; i < arr.GetLength(0); i++)
{
if (i == row)
{
continue;
}
Console.WriteLine("{0} == {1}", arr[row, col], arr[i, col]);
if (i != row && arr[row, col] == arr[i, col])
{
unique = false;
}
}
for (int j = 0; j < arr.GetLength(1); j++)
{
if (j == col)
{
continue;
}
Console.WriteLine("{0} == {1}", arr[row, col], arr[row, j]);
if (j != col && arr[row, col] == arr[row, j])
{
unique = false;
}
}
}
}
【问题讨论】:
-
如果有 3 列,那么这三列中的数字是否总是 1、2 和 3?或者它们可以是其他数字(例如 1、2 和 4)?我问的原因是,如果它们只能是 1、2 和 3,那么问题就简单得多了。
-
它甚至可以是 123,456,789,因为这是一个唯一的矩阵
-
那么,作为一个例子,如果数组的第一行包含 4 和 89 和 123 是否有效?
-
能否请您添加一个minimal reproducible example:工作代码,包括您正在使用的数组?
标签: c#