求助!!为什么输出不了皇后的位置?!
查看原帖
求助!!为什么输出不了皇后的位置?!
497332
利姆露·三上悟楼主2021/7/22 12:03
#include<bits/stdc++.h>
using namespace std;
char q[100][100];
int n,x,y[10];
//n是几位皇后,x是为方便标记皇后攻击范围; 
//y用于储存皇后的列 
void  queen(int b)
//以第一行为起始 
{
	if(b>n) 
	{
	    for(int c=1;c<=n;c++)cout<<y[c]<<" ";
		//输出皇后的列;	
	    cout<<endl;
	    return ;	
	}
	 //当找到n个合适的位置时输出
	for(int c=1;c<=n;c++)
	{
		if(q[b][c]!='4')
		//为皇后找到安全的列; 
		{
			y[b]=c;
			//记住皇后所在的列 
			q[b][c]='4'; 
		    for(x=0;x<n;x++)
		    {  
		        q[b][c+x]='4';
				q[b+x][c]='4';
				q[b+x][c+x]='4';
		        if(c-x>=0){q[b][c-x]='4';q[b+x][c-x]='4';}
			    if(b-x>=0){q[b-x][c]='4';q[b-x][c+x]='4';}
				if(b-x>=0&&c-x>=0)q[b-x][c-x]='4';	
		    }
			//标记皇后的攻击范围; 
		    queen(b+1);
			//寻找下一位皇后的位置; 
		}
	}
}
int main()
{
	cin>>n;
	queen(1);
	return 0;
}
2021/7/22 12:03
加载中...