求助,会回关
查看原帖
求助,会回关
1378206
GOlize楼主2024/7/15 16:50

#include<bits/stdc++.h> using namespace std;

#include<bits/stdc++.h>
using namespace std;


const int N=10;
int n,ans,pos[N];//pos下标表示行,数据表示列号 
bool l[N],d1[2*N],d2[2*N]; 
int a[N][N];

void dfs(int x){
	if (x>n){
		ans++;
		cout<<"No. "<<ans<<"\n";
		memset(a,0,sizeof(a));
		for (int i=1;i<=n;i++)
			a[pos[i]][i]=1;//由于一本通上的题目要求,改了一下行列 
		for (int i=1;i<=n;i++){
			for (int j=1;j<=n;j++)
				cout<<a[i][j]<<" ";
			cout<<"\n"; 
		}
		return ;
	}
	for (int y=1;y<=n;y++)
		if (!l[y]&&!d1[x+y]&&!d2[x-y+n]){
			pos[x]=y;
			l[y]=d1[x+y]=d2[x-y+n]=true;
			dfs(x+1);
			l[y]=d1[x+y]=d2[x-y+n]=false;
		}
}
int main(){
	n=8;
	dfs(1);
	return 0;
}
2024/7/15 16:50
加载中...