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

📄 17.cpp

📁 可以由用户指定皇后个数的解八皇后问题的源程序
💻 CPP
字号:
#include<iostream>
using namespace std;
int answer=0;
class queen{
	int *line;
	int size;
public:
	queen(int nn){
		size=nn;
		line=new int[size];
	}
	void show();
	int Judge(int t);
	void control(int n);
};
    
	
void queen::show()//显示摆放的结果.
{
	int i,j;
	int n=size;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(line[i]==j)
				cout<<"Q";
			else
				cout<<"*";
		}
		cout<<endl;
	}
	answer++;
	cout<<endl;
	cout<<answer<<endl;
	getchar();
}
int queen::Judge(int t)//判断摆放的位置是否正确,不正确返回1,正确返回0.
{
	int i,n=0;
	for(i=0;i<t;i++){
		if(line[i]==line[t])
		{n=1;break;}
		if(line[i]+i==line[t]+t)
		{n=1;break;}
		if(line[i]-i==line[t]-t)
		{n=1;break;}
	}
	return n;
}
void queen::control(int n)//主要控制函数.
{
	int t=size;
	for(line[n]=0;line[n]<t;line[n]++)
	{
		if(Judge(n))
			continue;
		else
			if(n!=size-1)
				control(n+1);
			else
				show();
	}
}
int main()//主函数.
{
	int n;
	cout<<""<<endl;
	cin>>n;
	queen q1(n);
	q1.control(0);
// cout<<answer<<endl;
	system("pause");
	return 0;
}

⌨️ 快捷键说明

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