在n个整数中选k个,使选出来的数的和为sum

来源:互联网 发布:数据分析 用户画像 编辑:程序博客网 时间:2024/05/10 04:48

抽象形式的dfs
实现代码如下

#include<bits/stdc++.h>using namespace std;int n,m,k;int p[35]={0};bool dfs(int x,int tk,int s){    if(x>n||tk>k) return false;   //判断边界    if(tk==k) return (s==m);      //如果已经有k个数被选    if(dfs(x+1,tk,s)) return true;    if(dfs(x+1,tk+1,s+p[x])) return true;    return false;}int main(){    cin>>m>>n>>k;    for(int i=1;i<=n;i++)    {        cin>>p[i];    }    if(dfs(0,0,0)) cout<<"Yes";    else cout<<"No";    return 0;}
阅读全文
0 0
原创粉丝点击