#include<iostream>
#include<stdio.h>
#include<memory.h>
using namespace std;
#define N 1005
int a[N],b[N];
int n,sum,bi;
void dfs(int index,int s)
{
if(index>=n)
return ;
if(s==sum)
{
int i=0;
while(b[i])
printf("%d ",b[i++]);
printf("\n");
printf("oK!%d\n",sum);
return ;
}
//selected!
b[bi++]=a[index];
dfs(index+1,s+a[index]);
b[bi--]=0;
//not selected!
dfs(index+1,s);
}
int main(int argc,char *argv[])
{
freopen("input.txt","r",stdin);
int i;
scanf("%d%d",&n,&sum);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
memset(b,0,sizeof(b));
bi=0;
dfs(0,0);
return 0;
}
输入两个整数n和m,从数列1,2.......n中随意取几个数,使其和等于m,要求将其中所有的可能组合列出来
最新推荐文章于 2020-03-09 03:12:58 发布