标签:
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 Program 10 { 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 else 23 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 }
标签:
原文地址:http://www.cnblogs.com/mandalaluo/p/4204269.html