八皇后问题
class Program
{
static void Main(string[] args)
{
MainQueen();
}
static int count = 0;
public static void MainQueen()
{
int n = Int32.Parse(Console.ReadLine());
Listint> queen = new Listint>(n);
for (int i = 1; i
{
queen.Add(0);
}
PutQueen(n, queen, 0);
Console.WriteLine(count);
Console.ReadKey();
}
private static void PutQueen(int n, Listint> queen, int row)
{
for (queen[row] = 1; queen[row]
{
if (CheckQueens(queen, row))
{
row++;
if (row
{
PutQueen(n, queen, row);
}
else
{
count++;
for (int i = 0; i
{
Console.Write(queen[i].ToString() + ' ');
}
Console.WriteLine();
}
row--;
}
}
}
private static bool CheckQueens(Listint> queen, int row)
{
for (int i = 0; i
{
if (Math.Abs(queen[i] - queen[row]) == Math.Abs(i - row) || queen[i] == queen[row])
{
return false;
}
}
return true;
}
}