额。。原本是想从下标1开始全排列的,但我忘了next_permutation()是从下标0开始的了。。。。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n, t, res[12][12], f;
int main()
{
while (cin>>n>>t) {
memset(res, 0, sizeof(res));
for (int i = 0; i <= n; i++)
res[1][i] = i+1;
do {
for (int i = 2; i <= n; i++)
{
for (int j = 0; j <= n-i; j++)
res[i][j] = res[i-1][j]+res[i-1][j+1];
}
if (res[n][0] == t)
{
for (int i = 0; i < n; i++)
cout<<res[1][i]<<" ";
cout<<endl;
break;
}
}while (next_permutation(res[1], res[1]+n));
}
}