给定一个总值,和一个整数数组,从数组中找出和等于总值的那几个数,
如果存在,数相应的下标为1,其余的为0,如果不存在,输出no。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
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;
}
else find(n,m-1);
}
}
void main(){
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++)
cin>>a[i];
if(find(n,m)){
for(int i=0;i<m;i++)
cout<<f[i]<<" ";
cout<<endl;
}
else cout<<"NO"<<endl;
}