zoukankan      html  css  js  c++  java
  • 部分和问题

    深搜解题。

    /*
    问题描述:
    部分和问题
    给定整数a1,a2....an,判断是否可以从中选出若干数,使它们的和恰好为k。
    0<n<21
    输入:
    4 13
    1 2 4 7
    输出:
    YES
    */
    
    #include<iostream>
    #define MAX 1000
    using namespace std;
    
    int a[MAX],n,k;
    
    bool dfs(int i, int sum)
    {
         if(i == n) return sum == k;
    
         if(dfs(i +1, sum)) return true;
    
         if(dfs(i+1, sum+a[i])) return true;
    
         return false;
    }
    
    int main()
    {
         int i;
    
         cin>>n>>k;
    
         for(i=0;i<n;i++)
              cin>>a[i];
    
         bool ans = dfs(0, 0);
    
         if(ans) cout<<"YES";
         else cout<<"NO";
         cout<<endl;
    
         return 0;
    }
    世上无难事,只要肯登攀。
  • 相关阅读:
    C语言I博客作业09
    C语言I博客作业08
    14
    13
    12
    11
    10
    9
    8
    7
  • 原文地址:https://www.cnblogs.com/littlehoom/p/3428299.html
Copyright © 2011-2022 走看看