输入两个整数n和m,从数列1,2.......n中随意取几个数,使其和等于m,要求将其中所有的可能组合列出来

来源:互联网 发布:mac yosemite u盘 编辑:程序博客网 时间:2024/06/06 12:24
#include<iostream>#include<stdio.h>#include<memory.h>using namespace std;#define N 1005int 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;}


0 0
原创粉丝点击