P1562求调
  • 板块学术版
  • 楼主Sukilin
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/5 13:21
  • 上次更新2024/10/5 15:21:00
查看原帖
P1562求调
959201
Sukilin楼主2024/10/5 13:21
#include <iostream>
#include <cstdio>
const int N = 15;
int n, base;
unsigned long long ans;
int s[N];
void DFS(int numRow, int col, int prin, int sub) {
	if(col == base) {ans++; return; }
	int able = base & (~(s[numRow] | col | prin | sub));
	while(able){
		int lowbit = able & (-able);
		able -= lowbit;
		DFS(numRow + 1, col | lowbit, (prin | lowbit) << 1, (sub | lowbit) >> 1); 
	}
}
int main() {
	scanf("%d\n", &n);
	base = (1 << n) - 1;
	for(int i = 0; i < n; i++){
		for(int j = 1; j < n; j++) {
			char c = getchar();
			if(c == '.') s[i] |= (1 << i);
		}
		char end = getchar();
	}

	DFS(1, 0, 0, 0);
	std::cout << ans << '\n';
	
	return 0;
}

第一个点 AC,余下 WA

2024/10/5 13:21
加载中...