70分超时求助
查看原帖
70分超时求助
643691
6LZT楼主2022/2/2 15:49
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;

int a[100], b[100], c[100], d[100];
int total = 0;
int n;
char map[100][100];

void queen(int i){
    if(i > n){
        total++;
        return;
    }
    else{
        for(int j = 1; j <= n; j++){
            if ((!b[j]) && (!c[i+j]) && (!d[i-j+n]) && map[i][j]=='*'){
                a[i] = j;
                b[j] = 1;
                c[i+j] = 1;
                d[i-j+n] = 1;
                queen(i+1);
                b[j] = 0;
                c[i+j] = 0;
                d[i-j+n] = 0;
            }
        }
    }
}
int main(){    
    cin >> n;
    for (int i = 1; i <= n; i++){
    	for (int j = 1; j <= n; j++){
    		cin >> map[i][j];
		}
	}
    queen(1);
    cout << total;
    return 0;
}
2022/2/2 15:49
加载中...