Why?!(悬一关)

P1219 [USACO1.5] 八皇后 Checker Challenge

@[jmsyang0808](/user/1202695) 你在主函数里又定义了一次$n$,使得 $n$ 的全局变量值为1 删去主函数里的 ``` int n ```
by call_of_silence @ 2024-02-05 16:31:05


@[call_of_silence](/user/1168861) 谢谢 但是WA啊(顺序不对)
by jmsyang0808 @ 2024-02-05 16:58:27


@[jmsyang0808](/user/1202695) 你存方案和判一列出现皇后没有需要两个数组 ``` #include<iostream> #include<algorithm> using namespace std; const int N=51; int n,cnt=0; int u[N],l[N]; bool p[N],q[N]; void dfs(int s) { if(s>n) { if(cnt<3) { for(int i=1;i<=n;i++) cout << u[i] <<' '; cout <<endl; } cnt++; return ; } for(int i=1;i<=n;i++) { if((!l[i])&&(!p[i+s])&&(!q[s-i+n])) { l[i]=1;p[i+s]=q[s-i+n]=1; u[s]=i; dfs(s+1); l[i]=0;p[i+s]=q[s-i+n]=0; } } } int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n; dfs(1);cout<<cnt; return 0; } ```
by call_of_silence @ 2024-02-05 17:04:54


@[jmsyang0808](/user/1202695) 还有判对角线的时候,右上至左下应该是 $i-s+n$ 吧
by call_of_silence @ 2024-02-05 17:06:13


万分感谢 @[call_of_silence](/user/1168861) 会关 此贴结
by jmsyang0808 @ 2024-02-05 19:46:37


|