首页 > 代码库 > 八皇后问题 回溯法
八皇后问题 回溯法
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Demo 8 { 9 class Program10 {11 static int num = 8;/*可以随意修改,num是多少解的就是几皇后问题*/12 static int[] arr = new int[8];13 static int count = 0;14 static void display()/*一个简单的数组输出函数,顺便统计解的个数*/15 {16 for (int i = 0; i < num; ++i)17 {18 for (int j = 0; j < num; j++)19 {20 if (arr[i] == j)21 Console.Write("Q");22 else23 Console.Write("*");24 }25 26 Console.WriteLine(" ");27 }28 count++;29 Console.WriteLine("-------------" + count.ToString() + "--------------------");30 }31 32 static void queens(int pos = 0)33 {34 /*同在斜线或者直线上*/35 for (int i = 0; i < pos-1; ++i)36 {37 int off = arr[i] - arr[pos - 1];38 if (off == 0 || off == pos - 1 - i || -off == pos - 1 - i)39 return;40 }41 42 /*符合条件就输出*/43 if (pos == num)44 { 45 display(); 46 return; 47 }48 49 /*递归搜索解空间*/50 for (int k = 0; k < num; ++k)51 {52 arr[pos] = k;53 queens(pos + 1);54 }55 }56 57 static void Main(string[] args)58 {59 queens(0);60 61 Console.ReadKey();62 63 }64 }65 }
八皇后问题 回溯法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。