接触深度优先搜索
#include<iostream>
using namespace std;
/*
查找是否存在部分和等于一个给定的值,
对于递归的初步应用,与深度优先搜索
不加与加的情况,进行递归
*/
int a[100];
int n,k,i,sum;
bool dfs(int i,int sum,int n){
cout<< "i="<<i<<" sum="<<sum<<endl;
if(i==n) return sum==k;
if(dfs(i+1,sum,n)) return true;//不加
if(dfs(i+1,sum+a[i],n)) return true;//加
return false;
}
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
if(dfs(0,0,n)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
浙公网安备 33010602011771号