1. 程式人生 > 資訊 >寒武紀釋出新款 AI 訓練卡 MLU370-X8:7nm 工藝,48GB LPDDR5 記憶體

寒武紀釋出新款 AI 訓練卡 MLU370-X8:7nm 工藝,48GB LPDDR5 記憶體

題目連結

https://www.luogu.com.cn/problem/P1219

題目思路

dfs搜尋,列舉每一行,查詢合法的位置
關鍵:正對角線用一維表示為 \(u + i\),反對角線為了不超範圍表示為 \(n - u + i\)

題目程式碼

#include <iostream>
#include <algorithm>

using namespace std;
const int N = 110;
int g[N][N];
bool row[N], dg[N], udg[N];
int n, cnt;;

int dfs(int u)
{
    if(u == n)
    {
        if(cnt < 3)
        {
            for(int i = 0; i < n; i ++ )
            {
                for(int j = 0; j < n; j ++ )
                    if(g[i][j] == 1) cout << j + 1 << ' ';
            }
            puts("");
        }
        cnt ++ ;
        return 0;
    }
    
    for(int i = 0; i < n; i ++ )
    {
        if(!row[i] && !dg[u + i] && !udg[n - u + i ] && g[u][i] == 0)
        {
            g[u][i] = 1;
            row[i] = dg[u + i] = udg[n - u + i] = true;
            dfs(u + 1);
            g[u][i] = 0;
            row[i] = dg[u + i] = udg[n - u + i] = false;
        }
    }
}

int main()
{
    cin >> n;
    dfs(0);
    cout << cnt << endl;
    return 0;
}