VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c# 八皇后问题

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  八皇后问题是一个古老而著名的问题,是回溯算法的典型应用。八皇后问题就是棋盘上的8个皇后不能在同一行、一列或一条斜线上,共用92种方法。代码如下:publicvoidQueenArithmetic(intsize)
{
  int[]Queen=newint[size];//每行皇后的位置
  inty,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("Over");
        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++)
            Console.Write(Queen[i]==j?'Q':'*');
          Console.WriteLine();
        }
        y=size-1;//回朔
      }
    }
  }
}



相关教程