http://poj.org/problem?id=3187
输入n,sum,按杨辉三角的规则,求1~n的数。
全排列
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,sum;
int a[20],b[20];
int main(){
while (cin >> n >> sum){
for (int i=1;i<=n;i++){
a[i]=i;
}
do{
for (int i=1;i<=n;i++){
b[i]=a[i];
}
for (int i=n-1;i>=1;i--){
for (int j=1;j<=i;j++){
b[j]+=b[j+1];
}
}
if (b[1]==sum) break;
}while (next_permutation(a+1,a+1+n));
for (int i=1;i<=n;i++){
cout << a[i] << " ";
}
cout << endl;
}
}