八皇后问题(c#版) 5
设计程序完成如下要求:在8×8的国际象样棋盘上,放置8个皇后,使得这8个棋子不能互相被对方吃掉。要求:1)依次输出各种成功的放置方法。2)最好能画出棋盘的图形形式,并在其...
设计程序完成如下要求:在8×8的国际象样棋盘上,放置8个皇后,使得这8个棋子不能互相被对方吃掉。
要求:
1)依次输出各种成功的放置方法。2)最好能画出棋盘的图形形式,并在其上动态地演示试探过程。 展开
要求:
1)依次输出各种成功的放置方法。2)最好能画出棋盘的图形形式,并在其上动态地演示试探过程。 展开
展开全部
/*
* 八皇后问题
* @Author: Red_angelX
*/
class Program
{
const int NCOUNT = 8;
static int[] QueenMap = new int[NCOUNT];
static int iCount = 1;
static void Main(string[] args)
{
int current = System.Environment.TickCount;
PlayQueen(0);
Console.WriteLine("Eclped {0} ms", Environment.TickCount - current);
Console.Read();
}
/*
* 核心函数,放置第N枚皇后(递归)
*/
static void PlayQueen(int n)
{
if (n == NCOUNT)
{
PrintResult();
return;
}
for (int i = 1; i <= NCOUNT; i++)
{
QueenMap[n] = i;
if (IsValid(n))
PlayQueen(n + 1);
}
}
/*
* 输出结果
*/
static void PrintResult()
{
Console.Write("No.{0} ", iCount++);
for (int i = 0; i < NCOUNT; i++)
Console.Write("{0} ", QueenMap[i]);
Console.Write(" ");
}
/*
* 检查第n个皇后放上去之后是否合法
*/
static bool IsValid(int n)
{
for (int i = 0; i < n; i++)
{
if (QueenMap[i] == QueenMap[n])
return false;
if (Math.Abs(QueenMap[i] - QueenMap[n]) == n - i)
return false;
}
return true;
}
}
* 八皇后问题
* @Author: Red_angelX
*/
class Program
{
const int NCOUNT = 8;
static int[] QueenMap = new int[NCOUNT];
static int iCount = 1;
static void Main(string[] args)
{
int current = System.Environment.TickCount;
PlayQueen(0);
Console.WriteLine("Eclped {0} ms", Environment.TickCount - current);
Console.Read();
}
/*
* 核心函数,放置第N枚皇后(递归)
*/
static void PlayQueen(int n)
{
if (n == NCOUNT)
{
PrintResult();
return;
}
for (int i = 1; i <= NCOUNT; i++)
{
QueenMap[n] = i;
if (IsValid(n))
PlayQueen(n + 1);
}
}
/*
* 输出结果
*/
static void PrintResult()
{
Console.Write("No.{0} ", iCount++);
for (int i = 0; i < NCOUNT; i++)
Console.Write("{0} ", QueenMap[i]);
Console.Write(" ");
}
/*
* 检查第n个皇后放上去之后是否合法
*/
static bool IsValid(int n)
{
for (int i = 0; i < n; i++)
{
if (QueenMap[i] == QueenMap[n])
return false;
if (Math.Abs(QueenMap[i] - QueenMap[n]) == n - i)
return false;
}
return true;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询