荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: [转载] 八皇后问题的C#解答
发信站: 荔园晨风BBS站 (Mon Jul 16 17:18:48 2001), 转信

改编自V星[视窗王子]应答程序,如下:
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
----------------------------------------------------------------------------
--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店