算法:算法
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