using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EightQueenRecursive
{
class Program
{
//定义棋盘
int[] a = new int[8];
//定义解决方案个数
int solution=0;
//规则
public bool isOK(int row,int col)
{
for(int i = 0; i < row; i++)
{
if (a[i] == col||Math.Abs(a[i]-col)==Math.Abs(i-row))
{
return false;
}
}
return true;
}
//显示
void display()
{
Console.WriteLine("第{0}种解", solution++);
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (a[i] == j)
{
Console.Write("Q");
}else
{
Console.Write("#");
}
}
Console.WriteLine();
}
Console.WriteLine("--------");
}
void DSF(int row)
{
//find
for (int i = 0; i < 8; i++)
{
if (isOK(row,i))
{
a[row] = i;
if (row<7)
{
//forward
DSF(row + 1);
}
else
{
//done
display();
}
}
else
{
}
}
//back
}
static void Main(string[] args)
{
Program p = new Program();
//初始化棋盘
foreach(int i in p.a)
{
p.a[i] = 0;
}
p.DSF(0);
Console.ReadKey();
}
}
}
用DFS解决八皇后问题(递归)(c#)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 需要注意的是,比如如下代码: 为什么不是直接 stackk.Push(node);不是更方便吗由于本人知识浅薄,还...