大佬协助蒟蒻找出错误吧
下面是我的代码,
输入6,的结果是
看了好久,依然没找出哪儿里错了。也许眼尖的你可以帮我找出错误。
程序代码:
#include<iostream> #include<stdio.h> using namespace std; int n; const int N=30; int path[N]; bool col[N],dg[N],udg[N]; int sum; void dfs(int u){ if(u>n){ sum++; if(sum>3)return; else{ for(int i=1;i<=n;i++)printf("%d ",path[i]); printf("\n"); return; } } for(int i=1;i<=n;i++){ if((!col[i])&&(!dg[n+u-i])&&(!udg[i+u])){ path[u]=i; col[i]=true,dg[n+i-u]=true,udg[i+u]=true; dfs(u+1); col[i]=false,dg[n+i-u]=false,udg[i+u]=false; } } } int main(){ cin>>n; dfs(1); cout<<sum; return 0; }