求助求助
查看原帖
求助求助
820707
Do_www楼主2023/9/21 23:28

对每行进行搜索时,输出判断u==n为什么过不去,但u > n 就能过。没想明白

#include<bits/stdc++.h>

using namespace std;

const int N = 100;
bool col[N],dg[N*2],udg[N*2];
int ans[N];
int n;
int total;
void dfs(int u)
{
    if(u == n)
    {
        if(total <= 2)
        {
            for(int k = 1 ; k <= n; k ++)
            {
                cout << ans[k]<<" ";
            }
            cout <<endl;
        }
        total ++;
    }
    for(int i = 1; i <= n ; i ++)
    {
        if(!col[i] && !dg[u + i] && !udg[u - i + n])
        {
            ans[u] = i;
            col[i] = dg[u + i] = udg[u - i + n] = true;
            dfs(u + 1);
            col[i] = dg[u + i] = udg[u - i + n] = false;
        }
    }
}
int main()
{
    cin >> n;
    dfs(1);
    cout << total <<endl;
    return 0;
}
2023/9/21 23:28
加载中...