zoukankan      html  css  js  c++  java
  • 51nod1268 和为K的组合(DFS)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
     收藏
     关注
    给出N个正整数组成的数组A,求能否从中选出若干个,使他们的和为K。如果可以,输出:"Yes",否则输出"No"。
    Input
    第1行:2个数N, K, N为数组的长度, K为需要判断的和(2 <= N <= 20,1 <= K <= 10^9)
    第2 - N + 1行:每行1个数,对应数组的元素A[i] (1 <= A[i] <= 10^6)
    Output
    如果可以,输出:"Yes",否则输出"No"。
    Input示例
    5 13
    2
    4
    6
    8
    10
    Output示例
    No
    李陶冶 (题目提供者)
     
     数据比较水,直接dfs
     1 #include<iostream>
     2 using namespace std;
     3 long long int n,a[21],m;
     4 int flag=0,v[21]={0};
     5 void dfs(long long int sum,int t)
     6 {
     7     //cout<<sum<<endl;
     8     if(sum==m)
     9     {
    10         flag=1;
    11         return;
    12     }
    13     if(flag||sum>m||t>n)
    14     return;
    15     dfs(sum+a[t],t+1);
    16     dfs(sum,t+1);
    17 }
    18 int main()
    19 {
    20     scanf("%lld%lld",&n,&m);
    21     long long int sum=0;
    22     for(int i=1;i<=n;i++)
    23     {
    24         scanf("%lld",&a[i]);
    25         sum+=a[i];
    26     }
    27     if(sum<m)
    28     printf("No
    ");
    29     else if(sum==m)
    30     printf("Yes
    ");
    31     else
    32     {
    33         flag=0;
    34         dfs(0,1);
    35         if(flag)
    36         printf("Yes
    ");
    37         else
    38         printf("No
    ");
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    《Spring2之站立会议1》
    《Spring1之第十次站立会议》
    《Spring1之第九次站立会议》
    《Spring1之第八次站立会议》
    《Spring1之第七次站立会议》
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/spongeb0b/p/9345863.html
Copyright © 2011-2022 走看看