一开始先用最简单的试试,实在是TLE再想其他办法。不要一直觉得总有公式可以写
//#define LOCAL
#include <cstdio>
#include <cstring>
#include <algorithm>
#define SIZE 10
using namespace std;
int main(){
#ifdef LOCAL
freopen("data.in", "r", stdin);
#endif
int n, target;
int map[SIZE];
scanf("%d%d", &n, &target);
for(int i = 0; i < n; i++)
map[i] = i + 1;
do{
int temp[SIZE];
for(int i = 0; i < n; i++)
temp[i] = map[i];
//copy(map, map + n, temp);
for(int i = n - 1; i >= 0; i--){
for(int j = 0; j < i; j++)
temp[j] += temp[j + 1];
}
if(temp[0] == target)
break;
}while(next_permutation(map, map + n));
for(int i = 0; i < n; i++)
printf("%d%c", map[i], i == n -1 ? '\n': ' ');
return 0;
}