#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
using namespace std;
int n,sum,a[13],ansa[13];
bool ans=0;
int solve(){
int h=n;
int a1[13]={0};
for(int i=1;i<=h;i++) a1[i]=a[i];
while(h != 1){
for(int i=1;i<=h;i++){
a1[i]=a1[i]+a1[i+1];
}
h--;
}
return a1[1];
}
void getnext(int n) {
for (int i = 1; i <= n; i++) {
a[i] = i;
}
do {
if(solve() == sum){
ans=1;
for(int i=1;i<=n;i++) ansa[i]=a[i];
return;
}
} while (next_permutation(a + 1, a + n + 1));
}
int main(){
freopen("triangle.in","r",stdin);
freopen("triangle.out","w",stdout);
int i,j;
cin >> n >> sum;
getnext(n);
if(ans){
for(i=1;i<=n;i++){
cout << ansa[i] << ' ';
}
}
return 0;
}
暴力解法,少量样例超时
题目:
题目来源于
如有侵权,联系删除