算法:算法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;spa
namespace 八皇后
{
class Program
{
int sum = 0; //定义是八皇后算法结果第几个结果
int[] Queens = new int[8]; //定义皇后的值
static void Main(String[] args)
{
Program q = new Program();
q.QueenSort(0);
}
public void QueenSort(int num)
{
for (int j = 1; j < 9; j++)
{
if (num == 8)
{
sum++;
Write(); break;
}
if (Conflict(num, j))
{
Queens[num] = j;
QueenSort(num + 1);
}
}
}
public bool Conflict(int row, int queen)
{
if (row == 0)
{
return true;
}
else
{
for (int n = 0; n < row; n++)
{
if (!Compare(Queens[n], row - n, queen))
{
return false;
}
}
return true;
}
}
public bool Compare(int lastqueen, int difference, int nowqueen)
{
if (lastqueen == nowqueen || lastqueen - nowqueen == difference || nowqueen - lastqueen == difference)
{
return false;
}
else
{
return true;
}
}
public void Write() //输出结果
{
Console.WriteLine("第{0}种皇后排列组合:", sum);
for (int i = 0; i < 8; i++)
{
Console.Write(Queens[i]); //输出结果是皇后所在的位置blog
/*
for (int j = 1; j < 9; j++) //输出结果棋盘
{
if (j== Queens[i])
{
Console.Write("■");
}
else
{
Console.Write("□");
}
}
*/
}
Console.Write("\n");
}
}
}it
截图(部分结果):io