蒟蒻求助,AC必关
查看原帖
蒟蒻求助,AC必关
1097079
_Fu_Fu_楼主2024/11/1 14:48

代码

#include <bits/stdc++.h>
using namespace std;
#define maxn 100
long long a[maxn], n, ans = 0;
long long b1[maxn], b2[maxn], b3[maxn];

void dfs(long long x) {
	if (x > n) {
		ans++;
		if (ans <= 3) {
			for (int i = 1; i <= n; i++) {
				cout << a[i];
				puts("");
			}
			return;
		}
		for (int i = 1; i <= n; i++) {
			if (b1[i] == 0 && b2[x + 1] == 0 && b3[x - i + 15] == 0) {
				a[x] = i;
				b1[i] = 1;
				b2[x + i] = 1;
				b3[x - i + 15] = 1;
				dfs(x + 1);
				b1[i] = 0;
				b2[x + i] = 0;
				b3[x - i + 15] = 0;
			}
		}
	}
}

int main() {
	cin >> n;
	dfs(1);
	cout << ans;
	return 0;
}
2024/11/1 14:48
加载中...