代码:

#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. python简单代码演示效果-10分钟教你用python 30行代码搞定简单手写识别!
  2. 关于如何生成随机记录
  3. mysql制作html静态网页6_将数据库中的所有内容生成html静态页面的代码
  4. cclink 和发那科机器人_发那科 iB系列 | 机器人地装行走轴三大升级介绍
  5. maven搭建多模块项目和管理
  6. java 动态代理范例 InvocationHandler与Proxy
  7. es6 Class的严格模式
  8. UILabel---.tff格式字体
  9. Trace View
  10. 锂电池 保护板方案 中颖SH367309方案 原理图 PCB 源代码
  11. 曲线运动与万有引力公式_物质自旋与力的形成 ——关于万有引力与磁荷力本质与统一问题的探讨...
  12. 网络中的延迟和抖动问题
  13. php怎么规范图片大小,如何在PHP中调整图片大小?
  14. 黑马程序员——Java基础--IO流(一)---File类以及其他流对象
  15. 股票数据接口-陈科肇
  16. linux 生成内核patch,谢宝友: 手把手教你给Linux内核发patch
  17. 【ES6基础】Map与WeakMap
  18. Android Studio使用Composing builds统一依赖管理
  19. 《论语》原文及其全文翻译 学而篇10
  20. static变量可以被修改吗

热门文章

  1. 磁盘不见了只剩一个c盘_电脑开机后磁盘都不见了,只剩下C盘了,为什么啊,求大神指教。...
  2. AP类WiFi模块系列二:半成品主板式大功率AP类WiFi模块
  3. 关于oneNote插件加载不显示的问题(NoteHighlight)
  4. IPv4地址-地址分类与用途
  5. 使用C语言打印出一个菱形
  6. 2021 Top5 免费录屏软件
  7. 产品经理的高阶能力:架构图的设计与画法
  8. 软件使用,Microsoft Visual C++运行库合集包
  9. XamarinEssentials教程应用程序信息AppInfo
  10. linux打印机驱动教程视频,Linux打印机配置wmv视频教程