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

📄 ba.cpp

📁 八皇后问题求解
💻 CPP
字号:
//数组的下标表示第几个人(第几行),数组的值表示人所在列的位置(第几列)
#include<iostream.h>
#include"duizhan.h"
#define number  8
int a[number]={0};
    
bool test(int i){
	for(int x=i-1;x>=0;x--)
	{
		if(a[i]==a[x]) return false;
		if(a[i]==i+1 && a[x]==x+1)  return false;
	};
	return true;
};


void queue(int m,struct store &s){
	int i=m;
	int t=i-1;
	a[i]=a[i]+1;
	for(int r=a[i];r<number;r++)
	{
		if(test(i)==true)  { push(s,a[i]);break;}
		else {
			a[i]++; 
			if(test(i)==true)  
			{ push(s,a[i]);break;};
		};
	};
    if(test(i)==false)  
	{   	
		a[i]=0;
		pop(s);
		queue(t,s);
		queue(t+1,s);
	};
		
};



void main(){
	struct store s;
	initstack(s);
	for(int i=0;i<number;i++)
        queue(i,s);
	cout<<"one of the right position is:"<<endl;
	for(int  k=0;k<number;k++)
      	cout<<"第"<<number-k<<"个人的位置是: "<<a[k]<<endl;
	cout<<"the picture is:"<<endl;
	for(int r=0;r<number;r++)
	{
		cout<<a[r]<<":";
		for(int n=0;n<number;n++){
			if(n==a[r]-1) cout<<"*";
			else cout<<"-";
		};
		cout<<endl;
	};
}

⌨️ 快捷键说明

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