#46109: 答案cpp


wghs1120242 (brucechen)

學校 : 臺北市私立薇閣高級中學
編號 : 284067
來源 : [60.248.154.143]
最後登入時間 :
2025-05-23 15:42:47

 

python 

 

#include <bits/stdc++.h>  
using namespace std;   
 
int m, n, r[15], c[15], qa[25], qb[25], ca[25], cb[25];   
 
int f(int Q, int C, int i){   
    if ((!Q && !C) || i > (m+n)) return 1;
    int ret = 0;
    if (C){      
        for (int j = 1; j <= (m+n); j++){
            if (c[j]) continue;
            if (qa[i-j+10] || qb[i+j]) continue;
            c[j] = 1;
            ca[i-j+10]++;
            cb[i+j]++;
            ret += f(Q, C-1, i+1);
            c[j] = 0;
            ca[i-j+10]--;
            cb[i+j]--;
        }
    }
    if (Q){
        for (int j = 1; j <= (m+n); j++){
            if (c[j]) continue;
            if (qa[i-j+10] || qb[i+j]) continue;
            if (ca[i-j+10] || cb[i+j]) continue;
            c[j] = 1;
            qa[i-j+10] = 1;
            qb[i+j] = 1;
            ret += f(Q-1, C, i+1);
            c[j] = 0;
            qa[i-j+10] = 0;
            qb[i+j] = 0;
        }
    }
    return ret;
}
 
int main(){
    cin >> m >> n;
    cout << f(m, n, 1) << "\n";
}