C# 实现数独计算器

来源:互联网 发布:怎样安装天正软件 编辑:程序博客网 时间:2024/05/01 04:39
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;            }        }    }


1 0
原创粉丝点击