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

📄 queen.cpp

📁 C++语言编写的马的遍历的实现方法
💻 CPP
字号:
#include <iostream.h>
bool a[9],b[15],c[15];
//a[i]为皇后的行位置,b[i]为对角线,c[i]为反对角线 
int LineNum[9];
int n;//方法数 
bool ok;//参数ok 
void solve(int j,bool& ok)//递归函数,负责往第j列开始的连续8-j+1列放皇后  
{   int i,k;
	for(i=1;i<=8;i++)
	{
		if((a[i]==true)&&(b[i+j-2]==true)&&(c[i-j+7]==true))
		//判断j列i行是否安全 
		{
			LineNum[j]=i;//第j列的皇后放在第i行 
			ok=true;
		    a[i]=false;
			b[i+j-2]=false;
			c[i-j+7]=false;
			if(j<8)
			{
				solve(j+1,ok);

            }

			else//布满皇后,输出  
			{   n++;	cout<<n<<endl;
				for(k=1;k<=8;k++)//坐标位置输出 
				{
				
					cout<<"("<<LineNum[k]<<","<<k<<")";
				
					}
				cout<<endl;
				for(int m=1;m<=8;m++)//棋盘输出 
				{
					for(k=1;k<=8;k++)
					{
						if(m==LineNum[k])
							cout<<'Q';
						else
							cout<<'+';
					    
					}
                   
				
				cout<<endl;
				}
			}
		
				
			a[i]=true;
	        b[i+j-2]=true;
			c[i-j+7]=true;
			
		}
		else
		    ok=false;
	}
}
int main()
{   int i;
    n=0;
	for(i=0;i<9;i++)//初始空棋盘 
		a[i]=true;
	for(i=0;i<15;i++)//初始空棋盘 
	{
		b[i]=true;
		c[i]=true;
	}
	solve(1,ok);
	return 0;//成功返回0 
}
	    
            

⌨️ 快捷键说明

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