八皇后问题(C#)
传说中的八皇后问题,想了n年,想的头疼,想的睡不着觉,想的不吃饭!上网搜别人的程序,一看就头疼,不是很复杂代码凌乱没法看就是千篇一律的blog抄袭,就是不想看。今天突然豁然开朗,思路清晰的不得了,emacs上几行代码变实现:: )
using System;
class Queen
{
int[] data = new int[8]; //记录每一行的皇后放置位置
int count = 0;
public void search(int n)
{
for (int i = 0; i < 8; i++) //遍历要放置皇后的当前行的每一个位置
{
int j = 0;
for (; j < n; j++) //检测当前位置是否与前面的皇后冲突
if (i == data[j] || (i - n) == (data[j] - j) || (i + n) == (data[j] + j)) break;
if (j == n) //不冲突
{
data[n] = i; //记录当前放置位置
if (n == 7) print(++count); else search(n + 1); //放置下一行
}
}
}
public void print(int count)
{
Console.Write("第{0}种方案:\t", count);
for (int i = 0; i < 8; i++) Console.Write("{0}\t", data[i]);
}
}
class program
{
public static void Main()
{
Queen q = new Queen();
q.search(0);
}
}


浙公网安备 33010602011771号