最后一个点wa了
查看原帖
最后一个点wa了
371524
ElmPoplar楼主2022/2/14 03:03
#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int h[N], l[N], r[N];
int path[N];
int ans = 0;
int n;

void dfs(int k) {
	if (k == n + 1) {
		if (ans <= 2) {
			for (int i = 1; i <= n; i ++)
				printf("%d ", path[i]);
			printf("\n");
		}
		
		ans ++;
		
		return ;
	}

	for (int i = 1; i <= n; i ++) {
		if (h[i] != 1 && l[n + k - i] != 1 && r[k + i] != 1) {
			h[i] = l[n + k - i] = r[k + i] = 1;
			path[k] = i;
			dfs(k + 1);
			h[i] = l[n + k - i] = r[k + i] = 0;
		}
	}
}

int main() {
	scanf("%d", &n);

	dfs(1);
	
	cout << ans;

	return 0;
}

最后一个点wa了,不知道是哪里错了,求大佬帮助Orz

2022/2/14 03:03
加载中...