全WA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

P1219 [USACO1.5] 八皇后 Checker Challenge

dfs应该从1开始,还有终止条件应该是step>n不然少判断一行,改成下面这样就ac了 ```cpp #include<bits/stdc++.h> using namespace std; int n,c[14]; int sum=0; void dfs(int step) { if(step>n) { sum++; if(sum<=3) { for(int i=1;i<=n;i++) { cout<<c[i]<<' '; } cout<<'\n'; } }else { for(int i=1;i<=n;i++) { int ok=1; c[step]=i; for(int j=1;j<step;j++) { if(c[step]==c[j]||abs(step-j)==abs(c[step]-c[j])) { ok=0; break; } } if(ok==1) dfs(step+1); } } } int main() { cin>>n; memset(c,0,sizeof(c)); dfs(1); cout<<sum; return 0; } ```
by propitious @ 2024-02-21 22:09:18


@[propitious](/user/223333) 还有那个tot可以不用重复记数。if的判断里改简洁了点
by propitious @ 2024-02-21 22:10:40


|