⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class1.cs

📁 在一个8×8的棋盘里放置8个皇后
💻 CS
字号:
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 )
		{
			//后面这个fou循环就是为了找出y皇后的位置x
			//只需要一个x就可以标记一个皇后的位置,第y皇后就是第y列
			for (x=Queen[y]+1; x<SIZE; x++)
			{
				for (i=0;i<y;i++)
				{
					j = Queen[i];//第i个皇后的x方向的位置
					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位皇后没有排序呢
				y--;//皇后标记
			}
			else
			{
				Queen[y]=x;//确定皇后的位置
				y++;//下一个皇后
				if (y<SIZE)//如果大于或者等于SIZE后那么就可以输出一个八皇后的排序了
					Queen[y]=-1;
				else
				{
					//所有的皇后都排完了,输出
					//t就是记录成功排序的个数
					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;//回朔
				}
			}
		}
	Console.ReadLine();
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -