class Program
{
static Dictionary<int, int> list = new Dictionary<int, int>();
static void Main(string[] args)
{
for (int i = 0; i < 81; i++)
{
list.Add(i, 0);
}
list[0] = 5;
list[2] = 9;
Calc(0);
Show(list);
}
static bool Validate(int key, int value)
{
int x = key / 9;
int y = key % 9;
return !list.Where(e => (e.Key / 9) == x || (e.Key % 9) == y || ((e.Key % 9) / 3 == y / 3)
&& ((e.Key / 9) / 3 == x / 3)).Select(e => e.Value).Contains(value);
}
static void Show(IEnumerable<KeyValuePair<int, int>> list)
{
foreach (var item in list)
{
int x = item.Key / 9 + 1;
int y = item.Key % 9 + 1;
if (item.Key % 9 == 0)
Console.WriteLine();
Console.Write(item.Value + " ");
}
Console.WriteLine();
}
static bool Calc(int key)
{
if (key == 81)
{
return true;
}
if (list[key] != 0)
{
return Calc(key + 1);
}
else
{
for (int i = 1; i <= 9; i++)
{
if (Validate(key, i))
{
list[key] = i;
Console.WriteLine(key + " -> " + i);
if (Calc(key + 1))
{
return true;
}
else
{
list[key] = 0;
}
}
}
return false;
}
}
}
C# 实现数独计算器
最新推荐文章于 2023-05-09 20:57:27 发布