Ethereal_KQ @ 2023-08-20 12:59:01
#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;
}
by gjleeee @ 2023-08-25 22:31:56
共两处错误:\ 1、\ 原:
if(tot<3){
改:
if(tot<=3){
因:tot自增于判断前\ \ 2、\ 原:
printf("%d",&tot);
改:
printf("%d",tot);
因:略
by Ethereal_KQ @ 2023-08-28 08:41:48
谢谢大佬!!