我需要确定2d
数组是否唯一。 unique 表示 Sudoku规则(或Latin Square):每一列和每一行必须具有唯一值。
因此,以下不是被认为是唯一数组
int[,] matrix = new int[,] {
{1, 2, 3},
{2, 3, 1},
{3, 2, 1},
};
由于最后一列3 1 1
具有重复的1
值
我的if else
语句应该是什么,这样我才能使bool true
到2d数组是唯一的?
预先感谢
答案 0 :(得分:1)
好的,那么。唯一表示每个 row 和 column 都有唯一的值(“数独规则”)。让我们分析行和列(在HashSet<int>
的帮助下):
int[,] matrix = new int[,] {
{ 1, 2, 3 },
{ 2, 3, 1 },
{ 3, 2, 1 },
};
bool unique = true;
HashSet<int> hs = new HashSet<int>();
// Rows
for (int r = 0; r < matrix.GetLength(0) && unique; ++r) {
hs.Clear();
for (int c = 0; c < matrix.GetLength(1) && unique; ++c)
unique = hs.Add(matrix[r, c]));
}
// Columns
for (int c = 0; c < matrix.GetLength(1) && unique; ++c) {
hs.Clear();
for (int r = 0; r < matrix.GetLength(0) && unique; ++r)
unique = hs.Add(matrix[r, c]));
}
Console.WriteLine(unique ? "Unique" : "Not Unique");
结果:
Not Unique
由于3 1 1
列具有重复(非唯一)值(两个1
)