19,472
社区成员




#include "stdafx.h"
#include "stdio.h"
int d[]={0,1,2,4,8,100,200,400,800,10000,20000,40000,80000};
int a[50]={};
int csum=20108;
void dfs(int n, int step, int sum)
{
if (sum<0) return;
if (sum==0)
{
for (int i=1; i<=step-1; i++)
{
if (a[i]>0)
printf("%d\n",a[i]);
}
printf("\r\n");
return;
}
for (int i=step; i<=n-1; i++)
{
a[step]=d[i];
dfs(n,i+1,sum-d[i]);
a[step]=0;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n=sizeof(d)/sizeof(int);
dfs(n,1,csum);
getchar();
return 0;
}