zoukankan      html  css  js  c++  java
  • 51nod 1268

    1268 和为K的组合 

    基准时间限制: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

    数量小,可以直接做,用一集合储存现在的和,每遍历一个数就让它和集合里的数都相加。当然,只有小于k的才放进集合里,这个可以少算一些。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int a[22];
     4 int main() {
     5     int n, k;
     6     set<int> st[2];
     7     set<int> ::iterator it;
     8     cin >> n >> k;
     9     int last = 0;
    10     for(int i = 1; i <= n; i ++) cin >> a[i];
    11     for(int i = 1; i <= n; i ++) {
    12         last = 1 - last;
    13         it = st[1-last].begin();
    14         for(; it != st[1-last].end(); ++it) {
    15             if((*it)+a[i] < k) {
    16                 st[last].insert((*it)+a[i]);
    17             } else if((*it)+a[i] == k) return 0*printf("Yes
    ");
    18             st[last].insert((*it));
    19         }
    20         st[last].insert(a[i]);
    21     }
    22     if(st[last].count(k)) printf("Yes
    ");
    23     else printf("No
    ");
    24     return 0;
    25 }
  • 相关阅读:
    Silverlight日记:动态操作Grid
    【转】cocos2dx 自学知识点之三 自定义动画 使用plist来实现
    Cocos2d-x的内存管理
    好色之徒
    freetype
    cocos2d 自定义字体
    cocos2d-x 内存管理
    VS2010 检查内存泄露的方法
    c++链表
    c/c++ time.h 那点事
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/8976704.html
Copyright © 2011-2022 走看看