本地测评完全没有问题,但是交上去RE了
查看原帖
本地测评完全没有问题,但是交上去RE了
923248
Lian_zy楼主2023/10/17 17:58
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn = 12;
bool flag, vis[maxn];
int n, sum, nums[maxn], tri[maxn][maxn];
void dfs(int cur, int val) {
	if (flag || val > sum) return ;
	if (cur > n) {
		int s = 0;
		for (int i = 1; i <= n; i++) s += nums[i] * tri[n][i];
		if (s - sum) return ;
		for (int i = 1; i <= n; i++) printf("%d ", nums[i]);
		putchar(10), flag = true;
		return ;
	}
	for (int i = 1; i <= n; i++) {
		if (vis[i]) continue;
		vis[i] = true;
		nums[cur] = i;
		dfs(cur + 1, val + i);
		vis[i] = false;
	}
	return ;
}
int main() {
	scanf("%d %d", &n, &sum);
	tri[1][1] = 1;
	for (int i = 2; i <= maxn; i++) {
		for (int j = 1; j <= i; j++){
			tri[i][j] = tri[i - 1][j] + tri[i - 1][j - 1];
		}
	}
	dfs(1, 0);
	return 0;
}
2023/10/17 17:58
加载中...