c语言蛮力法实现背包问题
代码:
#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语言蛮力法实现背包问题相关推荐
- java蛮力法背包问题_[算法课]五种蛮力法解决01背包问题
文章目录 注明:题目要求只能使用蛮力法 算法标签:全排列,枚举,二进制,dfs,数组 题目简介 思路 AC代码 方法一:字符串蛮力 方法二:二进制枚举 方法三:DFS 三.2闫老板思考角度 方法四:全 ...
- 蛮力法在求解最优解问题中的应用(JAVA)--旅行家问题、背包问题、分配问题
蛮力法在求解最优解问题中的应用 1.TSP(旅行商问题)要求我们找出一条n个给定城市之间的最短路径,使我们再回到出发的城市之前,对欧每个城市都只访问一次.我们可以用赋权图来描述这个问题,那么算法的目的 ...
- 蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现
这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...
- 蛮力法求最大字段和时间复杂度_蛮力法
蛮力法的主要思想就是用最简单的思路解决问题,一般性能不好,但仍然很重要. 理论上蛮力法可以解决可计算领域的各种问题 蛮力法解决较小规模问题是可接受的,如果设计一个更高效算法代价不值得 蛮力法可以作为时 ...
- 蛮力法的相关问题总结
今天想写写关于蛮力法的一些问题,也给之后自己留下一个笔记. 蛮力法关键------依次处理所有元素 1.查找问题中的蛮力法 顺序查找 int SeqSearch(int r[],int n,int k ...
- 使用蛮力法求解数字迷问题(类似ABCAB*A = DDDDDD)
蛮力法概述 蛮力法是一种简单直接地解决问题的方法,常常直接基于问题的描述>和所涉及的概念定义.是基于计算机运算速度快这一特性,在解决问题时采用的一种"懒惰"的策略.把问题的所 ...
- 蛮力法求解百元买百鸡问题
蛮力法(brute force methord,也称穷举法或者枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述.所以,蛮力法也是最容易应用的方法. 蛮力法所依赖的基本技术是遍历(trav ...
- linux冒泡算法程序,用蛮力法解决冒泡排序 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...
冒泡排序是蛮力法的另一个经典体现. 算法思想:比较列表中相邻的元素,如果是逆序的话,就交换他们的位置.重复多次之后,最大的元素就排到了最后一个位置.第二遍操作将第二个元素排到了倒数第二个位置上,这样一 ...
- c语言文件归并问题_C语言 | 选择法对10个数排序
例60:C语言实现用选择法对10个整数排序. 解析:选择排序思路如下,设有10个元素a[1]~a[10],将a[1]与a[2]~a[10],若a[1]比a[2]~a[10]都小,则不进行交换,即无任何 ...
- 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码
冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...
最新文章
- python简单代码演示效果-10分钟教你用python 30行代码搞定简单手写识别!
- 关于如何生成随机记录
- mysql制作html静态网页6_将数据库中的所有内容生成html静态页面的代码
- cclink 和发那科机器人_发那科 iB系列 | 机器人地装行走轴三大升级介绍
- maven搭建多模块项目和管理
- java 动态代理范例 InvocationHandler与Proxy
- es6 Class的严格模式
- UILabel---.tff格式字体
- Trace View
- 锂电池 保护板方案 中颖SH367309方案 原理图 PCB 源代码
- 曲线运动与万有引力公式_物质自旋与力的形成 ——关于万有引力与磁荷力本质与统一问题的探讨...
- 网络中的延迟和抖动问题
- php怎么规范图片大小,如何在PHP中调整图片大小?
- 黑马程序员——Java基础--IO流(一)---File类以及其他流对象
- 股票数据接口-陈科肇
- linux 生成内核patch,谢宝友: 手把手教你给Linux内核发patch
- 【ES6基础】Map与WeakMap
- Android Studio使用Composing builds统一依赖管理
- 《论语》原文及其全文翻译 学而篇10
- static变量可以被修改吗
热门文章
- 磁盘不见了只剩一个c盘_电脑开机后磁盘都不见了,只剩下C盘了,为什么啊,求大神指教。...
- AP类WiFi模块系列二:半成品主板式大功率AP类WiFi模块
- 关于oneNote插件加载不显示的问题(NoteHighlight)
- IPv4地址-地址分类与用途
- 使用C语言打印出一个菱形
- 2021 Top5 免费录屏软件
- 产品经理的高阶能力:架构图的设计与画法
- 软件使用,Microsoft Visual C++运行库合集包
- XamarinEssentials教程应用程序信息AppInfo
- linux打印机驱动教程视频,Linux打印机配置wmv视频教程