#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int ans[20];
int now[20];
int m,n;
void dfs(int p)
{
if(p>=m)return;
if(now[p]>n)return;
if(now[p]==n)
{
if(p<m)
{
for(int i=1;i<=p;i++)
ans[i]=now[i];
m=p;
}
return;
}
int j=p;
for(int i=p;i>=1;i--)
{
j++;
now[j]=now[j-1]+now[i];
dfs(p+1);
j--;
}
}
int main()
{
while(cin>>n&&n)
{
memset(now,0,sizeof(now));
memset(ans,0,sizeof(ans));
m=1000;
now[1]=1;
dfs(1);
for(int i=1;i<=m;i++)
printf("%d ",ans[i]);
printf("\n");
}
return 0;
}
1443:【例题4】Addition Chains
最新推荐文章于 2020-06-12 11:57:13 发布