八皇后问题的C#解答
2006-04-02 08:38
363 查看
using System;
class Queen{
const int SIZE = 8;//皇后数
public static void Main()
{
int[] Queen = new int [SIZE];//每行皇后的位置
int y,x,i,j,d,t=0;
y = 0;
Queen[0] = -1;
while( true )
{
for (x=Queen[y]+1; x<SIZE; x++)
{
for (i=0;i<y;i++)
{
j = Queen[i];
d = y-i;
//检查新皇后是否与以前的皇后能相互攻击
if ((j==x)||(j==x-d)||(j==x+d))
break;
}
if (i>=y)
break;//不攻击
}
if (x == SIZE) //没有合适的位置
{
if (0==y)
{
//回朔到了第一行
Console.WriteLine("Done");
break; //结束
}
//回朔
Queen[y]=-1;
y--;
}
else
{
Queen[y]=x;//确定皇后的位置
y++;//下一个皇后
if (y<SIZE)
Queen[y]=-1;
else
{
//所有的皇后都排完了,输出
Console.WriteLine("/n" + ++t +':');
for(i=0;i<SIZE;i++)
{
for (j=0;j<SIZE;j++)
if(Queen[i] == j)
Console.Write('Q');
else
Console.Write('.');
Console.WriteLine();
}
y = SIZE -1;//回朔
}
}
}
}
}
八皇后有解92个。
另:我认为foreach和for循环在意义上是不同的,在这里应该用for.
望指正,此致。
重粒子@Y2K0928
class Queen{
const int SIZE = 8;//皇后数
public static void Main()
{
int[] Queen = new int [SIZE];//每行皇后的位置
int y,x,i,j,d,t=0;
y = 0;
Queen[0] = -1;
while( true )
{
for (x=Queen[y]+1; x<SIZE; x++)
{
for (i=0;i<y;i++)
{
j = Queen[i];
d = y-i;
//检查新皇后是否与以前的皇后能相互攻击
if ((j==x)||(j==x-d)||(j==x+d))
break;
}
if (i>=y)
break;//不攻击
}
if (x == SIZE) //没有合适的位置
{
if (0==y)
{
//回朔到了第一行
Console.WriteLine("Done");
break; //结束
}
//回朔
Queen[y]=-1;
y--;
}
else
{
Queen[y]=x;//确定皇后的位置
y++;//下一个皇后
if (y<SIZE)
Queen[y]=-1;
else
{
//所有的皇后都排完了,输出
Console.WriteLine("/n" + ++t +':');
for(i=0;i<SIZE;i++)
{
for (j=0;j<SIZE;j++)
if(Queen[i] == j)
Console.Write('Q');
else
Console.Write('.');
Console.WriteLine();
}
y = SIZE -1;//回朔
}
}
}
}
}
八皇后有解92个。
另:我认为foreach和for循环在意义上是不同的,在这里应该用for.
望指正,此致。
重粒子@Y2K0928
相关文章推荐
- 八皇后问题详细分析与解答(递归法解答,c#语言描述)
- C# Struct的内存布局问题解答
- 关于C#中使用messagebox的问题解答
- C#常见问题解答
- C#字符串拆分问题解答(csdn)
- C# 用回溯递归解决“八皇后”问题
- 八皇后问题 C#版本算法 回溯法
- 八数码问题的三种算法解答(C#源代码) (补充)
- C#常看面试问题以及解答
- 隐式图回溯法之八皇后问题解答
- C# 解决八皇后问题
- C#并行编程高级教程 20 个 C# 热点问题解答
- C#WPF实现回溯算法解决八皇后问题
- c#问题 求大佬解答
- 主题:大家好!哪位高手帮我解答一个c#.net方面的问题,谢谢
- 八数码问题的三种算法解答(C#源代码)
- c# 几个基本的问题--估计认真学过的可以解答
- 八皇后问题之回溯算法实现<java实现>
- 八皇后问题的实现
- 关于Xerces-C++执行schema校验相关问题的详细解答