华为机试—01背包(等于总值)

来源:互联网 发布:港台 知乎 编辑:程序博客网 时间:2024/06/02 04:11

给定一个总值,和一个整数数组,从数组中找出和等于总值的那几个数,

如果存在,数相应的下标为1,其余的为0,如果不存在,输出no。


#include <stdio.h>#include <string.h>int a[50];int f[50]={0};int find(int n,int m){if(n==0)return 1;//刚好递归结束else if(n<0||n>0&&m==0)return 0;else {if(find(n-a[m-1],m-1)){f[m-1]=1;return 1;}elsefind(n,m-1);}}int main(){int n,m,i;scanf("%d%d",&n,&m);for(i=0;i<m;i++)scanf("%d",&a[i]);if(find(n,m)){for(i=0;i<m;i++)printf("%d ",f[i]);printf("\n");}elseprintf("no\n");return 0;}


0 0
原创粉丝点击