求救!解的总数不对!
查看原帖
求救!解的总数不对!
755911
Ethereal_KQ楼主2023/8/20 12:59
#include<bits/stdc++.h>
using namespace std;
int n,ans[14],tot=0;//ans代表最终的结果 tot是答案 
int a[3][28]={0};
void dfs(int t){//t是行数 
	if(t>n){ 
		tot++;
		if(tot<3){
			for(int i=1;i<=n;i++) printf("%d ",ans[i]);
			puts("");
		}
		return;
	}
	for(int i=1;i<=n;i++){
		if((!a[0][i])&&(!a[1][t+i])&&(!a[2][t-i+n])){
            ans[t]=i;
            a[0][i]=1; a[1][t+i]=1; a[2][t-i+n]=1;
            dfs(t+1);
            a[0][i]=0; a[1][t+i]=0; a[2][t-i+n]=0;
        }  }  }
int main(){
	scanf("%d",&n);
	dfs(1);
	printf("%d",&tot);
	return 0;
}
2023/8/20 12:59
加载中...