30分大佬求助……
查看原帖
30分大佬求助……
1033291
bowen666666楼主2024/5/27 18:33

30分代码怎么回事?

大佬求助(AC代码如下)

#include <bits/stdc++.h>
using namespace std; 
int n, sum, a[15], c[15][15], vis[15];
void dfs(int step, int cnt) {
	if (cnt > sum) return;
	if (step > n) {
		if (cnt == sum) {
			for (int i = 1; i <= n; i++) cout << a[i] << " ";
			exit(0);
		}
		return; 
	}
	for (int i = 1; i <= n; i++) {
		if (vis[i] == 0) {
			vis[i] = 1;
			a[step] = i;
			dfs(step + 1, cnt + i * c[n][step]);
			vis[step] = 0;
		}
	}
}
signed main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> n >> sum;
	c[1][1] = 1;
	for (int i = 2; i <= n; i++) {
		for (int j = 1; j <= i; j++) {
			c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
		}
	}
	dfs(1, 0);
	return 0;
}
2024/5/27 18:33
加载中...