zoukankan      html  css  js  c++  java
  • suseoj 1211: 子集和问题 (dfs)

    1211: 子集和问题

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 2  解决: 2
    [提交][状态][讨论版][命题人:liyuansong]

    题目描述


    子集和问题的一个实例为<S,t>。其中,S={x1,x2,...,xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得

     

     

    试设计一个解子集和问题的回溯法。

    对于给定的正整数的集合S和正整数c,计算S的一个子集S1使得

     

     


    输入

    第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值。接下来的1行中,有n个正整数,表示集合S中的元素。

    输出

    将子集和问题的解输出。当问题无解时,输出“Solution!”。

    样例输入

    5 10
    2 2 6 5 4

    样例输出

    2 2 6

    C/C++ 代码实现(AC):
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <queue>
     9 #include <climits>
    10 
    11 using namespace std;
    12 const int MAX = 1e6 + 10;
    13 int A[MAX], ANS[MAX], n, m, N, flag = 0, my_book[MAX] = {0};
    14 
    15 void dfs(int cnt, int step)
    16 {
    17     if (cnt == m)
    18     {
    19         N = step;
    20         flag = 1;
    21         return ;
    22     }
    23     if (cnt > m) return ;
    24     for (int i = 0; i < n; ++ i)
    25     {
    26         if (my_book[i]) continue;
    27         if (flag) return ;
    28         my_book[i] = 1;
    29         ANS[step] = A[i];
    30         dfs(cnt + A[i], step + 1);
    31         my_book[i] = 0;
    32     }
    33 }
    34 
    35 int main()
    36 {
    37     cin >>n >>m;
    38     for (int i = 0; i < n; ++ i)
    39     {
    40         scanf("%d", &A[i]);
    41     }
    42     dfs(0, 0);
    43     if (!flag) cout <<"Solution!" <<endl;
    44     else
    45     {
    46         for (int i = 0; i < N - 1; ++ i)
    47             cout <<ANS[i] <<" ";
    48         cout <<ANS[N - 1] <<endl;
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    错误、异常与自定义异常
    关于使用第三方库、代码复用的一些思考
    [Scheme]一个Scheme的Metacircular evaluator
    [Scheme]Understanding the Yin-Yang Puzzle
    [Lua]50行代码的解释器,用来演示lambda calculus
    将jar包安装到本地仓库
    PowerDesigner安装教程(含下载+汉化+破解)
    Jmeter如何录制APP客户端脚本
    jdk1.8 stream 求和
    VMware的快照和克隆总结
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9162503.html
Copyright © 2011-2022 走看看