代码:

#include<iostream>
using namespace std;
 
int sum_v;//货物总价值
int sum_w;//货物总重量
int goodNum;//一共有多少货物
int ans;//背包中现有几个货物
int maxWeight;//背包的总容量
int r[100];//记录最后的选择的货物标号
 
using namespace std;
struct good
{
    int weight;
    int value;
    int flag;//记录该货物是否被挑选
}goods[100];
//更新序列,并返回最大
int record(int sum_v)
{
    int count_good = 0;
    r[0] = sum_v;
    for(int i = 1;i <= goodNum;i++)
    {
        if(goods[i].flag == 1)
        {
            r[++count_good] = i;
        }
    }
    return count_good;
}
void findMin(int x)
{
    if(sum_w > maxWeight)
    {
        return;
    }
    //最好在此处判断sun_v是否为最大,这样才不会有sum_w > maxWeight的情况
    if(sum_v > r[0])
    {
        ans = record(sum_v);
    }
    //注意此处循环的条件
    for(int i = x;i < goodNum;i++)
    {
        sum_w += goods[i].weight;
        sum_v += goods[i].value;
        goods[i].flag = 1;
        findMin(i + 1);
        sum_w -= goods[i].weight;
        sum_v -= goods[i].value;
        goods[i].flag = 0;
    }
}
 
int main()
{
    cout<<"请输入物件的个数和背包容量:"; 
    cin >> goodNum >> maxWeight;
    for(int i = 1;i <= goodNum;i++)
    {
        goods[i].flag = 0;
        cout<<"第"<<i<<"个物品的重量和价值为:"; 
        cin >> goods[i].weight >> goods[i].value;
    }
    findMin(0);
    cout<<"背包内的物品组合为:"; 
    for(int i = 1;i <= ans;i++)
    {
        cout << r[i] << " ";
    }
    cout<<endl;
    cout << "maxValue:" << r[0] << endl;
    return 0;
}

c语言蛮力法实现背包问题相关推荐

  1. java蛮力法背包问题_[算法课]五种蛮力法解决01背包问题

    文章目录 注明:题目要求只能使用蛮力法 算法标签:全排列,枚举,二进制,dfs,数组 题目简介 思路 AC代码 方法一:字符串蛮力 方法二:二进制枚举 方法三:DFS 三.2闫老板思考角度 方法四:全 ...

  2. 蛮力法在求解最优解问题中的应用(JAVA)--旅行家问题、背包问题、分配问题

    蛮力法在求解最优解问题中的应用 1.TSP(旅行商问题)要求我们找出一条n个给定城市之间的最短路径,使我们再回到出发的城市之前,对欧每个城市都只访问一次.我们可以用赋权图来描述这个问题,那么算法的目的 ...

  3. 蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现

    这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...

  4. 蛮力法求最大字段和时间复杂度_蛮力法

    蛮力法的主要思想就是用最简单的思路解决问题,一般性能不好,但仍然很重要. 理论上蛮力法可以解决可计算领域的各种问题 蛮力法解决较小规模问题是可接受的,如果设计一个更高效算法代价不值得 蛮力法可以作为时 ...

  5. 蛮力法的相关问题总结

    今天想写写关于蛮力法的一些问题,也给之后自己留下一个笔记. 蛮力法关键------依次处理所有元素 1.查找问题中的蛮力法 顺序查找 int SeqSearch(int r[],int n,int k ...

  6. 使用蛮力法求解数字迷问题(类似ABCAB*A = DDDDDD)

    蛮力法概述 蛮力法是一种简单直接地解决问题的方法,常常直接基于问题的描述>和所涉及的概念定义.是基于计算机运算速度快这一特性,在解决问题时采用的一种"懒惰"的策略.把问题的所 ...

  7. 蛮力法求解百元买百鸡问题

    蛮力法(brute force methord,也称穷举法或者枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述.所以,蛮力法也是最容易应用的方法. 蛮力法所依赖的基本技术是遍历(trav ...

  8. linux冒泡算法程序,用蛮力法解决冒泡排序 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...

    冒泡排序是蛮力法的另一个经典体现. 算法思想:比较列表中相邻的元素,如果是逆序的话,就交换他们的位置.重复多次之后,最大的元素就排到了最后一个位置.第二遍操作将第二个元素排到了倒数第二个位置上,这样一 ...

  9. c语言文件归并问题_C语言 | 选择法对10个数排序

    例60:C语言实现用选择法对10个整数排序. 解析:选择排序思路如下,设有10个元素a[1]~a[10],将a[1]与a[2]~a[10],若a[1]比a[2]~a[10]都小,则不进行交换,即无任何 ...

  10. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

    冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...

最新文章

  1. The prefix “mvc“ for element “mvc:annotation-driven“ is not bound 异常
  2. linux跨服务器复制文件夹,linux下跨服务器文件文件夹的复制
  3. 宏基ec471g黑苹果_宏碁acer ec-471g 黑苹果配置教程
  4. 《XML程序设计》要点
  5. 04-多核多cluster多系统之间缓存一致性概述
  6. 简单搞定linux逻辑卷
  7. Windows切换网段脚本
  8. HDU 1294 Rooted Trees Problem
  9. HDU - 4348 To the moon(主席树区间更新-标记永久化)
  10. hive 运行命令后FAILED: Execution Error, return code 137 from org.apache.hadoop.hive.ql.ex ec.mr.MapredLoc
  11. MySql分区表性能测试及切换案例
  12. Oracle ROWNUM的陷阱
  13. kryo java_优化Java序列化– Java,XML,JSON,Kryo,POF
  14. QPW 手机短信验证码发送日志表(tf_sms_send_log)
  15. 如何提高企业数据质量
  16. 点击微信网页的a标签直接跳转到淘宝APP打开怎么实现的?附:动图演示效果
  17. EXCEL中关于角度的输入、输出及转换计算技巧
  18. 网络流量分类方法调研
  19. JavaScript函数防抖与截流
  20. 胡乱捣鼓03——PID定身12cm直线追踪小车做起来~

热门文章

  1. Earfcn与Frequency转换
  2. qca9563修改art区,将2T2R修改为1T1R
  3. 汪文君PowerMock实战视频
  4. 小王在CSDN的六年创作历程
  5. 2021 Top5 免费录屏软件
  6. Adobe illustrator如何修改默认字体
  7. MarkDown编辑器中数学公式与符号-LaTeX 各种数学命令,符号
  8. ColorUI 使用文档
  9. 1.微信小程序(colorUI)- 引入colorUI
  10. 栈基本操作的java代码实现(建栈,初始化栈、进栈、出栈)