- 1#include 2 int n,
- m;
- 3 int s[15],
- js[15] = {
- 0,
- 1
- };
- 4 bool v[15];
- 5 void find(int x, int y) {
- 6
- if (x > n) {
- 7
- if (y == m) {
- 8
- for (int i = 1; i <= n; i++) printf("%d ", s[i]);
- 9 n = 0;
- 10
- }
- 11
- return;
- 12
- }
- 13
- for (int i = 1; i <= n; i++) 14
- if (!v[i]) {
- 15 s[x] = i;
- 16 v[i] = 1;
- 17 find(x + 1, y + js[x] * i);
- 18 v[i] = 0;
- 19
- }
- 20
- }
- 21 int main() {
- 22 scanf("%d%d", &n, &m);
- 23
- for (int i = 1; i) 24
- for (int j = i; j > 0; j--) 25 js[j + 1] += js[j];
- 26 find(1, 0);
- 27
- return 0;
- 28
- }
来源: