アルゴリズムの8皇后問題をさかのぼります.
6836 ワード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SeqListSort
{
/// <summary>
/// 8
/// <ather>
/// <lihonglin>
/// </ather>
/// </summary>
class EightQueen
{
private const int COL = 8;//
private const int ROW = 8;
private static int[,] map = new int[COL, ROW];//
private static int Count = 0;//
//
public static void PutQueen(int row)
{
int i = 0;
if (ROW == row)//
{
Display();
return;
}
//
for (i = 0; i < COL; ++i )
{
if (IsOK(row, i))
{
map[row, i] = 8;
PutQueen(row+1);
//
map[row, i] = 0;
}
}
}
//
public static bool IsOK(int x, int y)
{
for (int i = 0; i < COL; i++)
{
for (int j = 0; j < ROW; ++j)
{
// , , ,
if (i == x || j == y || (x + y == i + j) || ( x - y == i - j))
{
if (8 == map[i,j])
{
return false;
}
}
}
}
return true;
}
public static void Display()
{
Count++;
Console.WriteLine (" {0} " , Count);
for (int i = 0; i < COL; i++)
{
for (int j = 0; j < ROW; ++j)
{
Console.Write( " "+ map[i,j] );
}
Console.WriteLine();
}
}
}
}