关于怎么优化
查看原帖
关于怎么优化
804757
Light_Star_RPmax_AFO楼主2023/4/6 17:04
#include <bits/stdc++.h>
using namespace std;
struct dfss{
	string a="";
}a[40000];

map<string,bool>maps;
int n,maxn;

void print(){
	for(int i=0;i<=maxn;i++){
		cout<<a[i].a<<endl;
	}
	return ;
}
bool ok=0;
void dfs(int x){
	if(ok==1)return ;
	if(x>maxn){
		if(a[x-1].a==a[0].a){
			print();
			ok=1;
			return ;
		}
	}
	for(int i=0;i<n;i++){
		string y=a[x-1].a;
		if(y[i]!='X'){
			y.replace(i,1,"X");
			if(!maps[y]){
				maps[y]=1;
				a[x].a=y;
				dfs(x+1);
				maps[y]=0;
				a[x].a="";
			}
		}else{
			y.replace(i,1,"O");
			if(!maps[y]){
				maps[y]=1;
				a[x].a=y;
				dfs(x+1);
				maps[y]=0;
				a[x].a="";
			}
		}
		
	}
}

int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		a[0].a+="O";
	maxn=pow(2,n);
	dfs(1);
}

2023/4/6 17:04
加载中...