zoukankan      html  css  js  c++  java
  • 背包问题的c++解法

    其实说是c++解法,其实只是用了iostream库而已,方便打印。。。。
    发现自己其实很笨很笨,,,这么简单的问题也用了那么久,哎!
    #include <iostream>
    #include 
    <string>
    using namespace std;

    // 0-1背包问题:
    // 输入m, n 两个整数,从1n任取几个整数,使其和等于 m的可能有多少种?
    // 关键:同一个数不能出现2次
    void beibao(int m, int n, int arr[], int num)
    {
        
    for (int i = (m > n ? n : m); i > 0--i)
        {
            arr[num] 
    = i;
            
    if(m - i > 0)
                beibao(m 
    - i, i - 1, arr, num + 1);
            
    else if(m - i == 0)
            {
                arr[num 
    + 1= i;
                
    // print arr[]
                for (int j = 0; j < num + 1++j)
                    cout
    <<arr[j] << " ";
                cout
    <<endl;
            }
        }    
    }

    int main(int argc, char* argv[])
    {
        
    int arr[12= {0};
        beibao(
    1312, arr, 0);
        
    return 0;
    }
  • 相关阅读:
    HDU-2502-月之数
    C语言的位运算的优势
    HDU-1026-Ignatius and the Princess I
    HDU-1015-Safecracker
    HDU-1398-Square Coins
    HDU-1028-Ignatius and the Princess III
    背包的硬币问题
    HDU-1527-取石子游戏
    HDU-1996-汉诺塔VI
    css中的选择器
  • 原文地址:https://www.cnblogs.com/yoran/p/1084621.html
Copyright © 2011-2022 走看看