蛮力法解决0_1背包问题新思路-——利用C语言位域类型
废话不说了,直接上代码
#include<stdio.h>
#include<math.h>
#define N 5 //物品种类数目
#define CAPACITY 6 //背包容量
#define COUNT 32
int weight[N]={3,2,1,4,5};
int value[N]={25,20,15,40,50};
union{
unsigned char state;
struct _FLAG{
unsigned char good_1_flag:1;
unsigned char good_2_flag:1;
unsigned char good_3_flag:1;
unsigned char good_4_flag:1;
unsigned char good_5_flag:1;
}flags;
}package;
int function()
{
int sunw=0,sumv=0,maxValue=0;
int totalWeight=0,totalValue=0,position,state;
for(state=0;state<COUNT;state++)
{
package.state=state;
totalWeight=package.flags.good_1_flag*weight[0]+package.flags.good_2_flag*weight[1]
+package.flags.good_3_flag*weight[2]+package.flags.good_4_flag*weight[3]
+package.flags.good_5_flag*weight[4];
if(totalWeight<=CAPACITY)
{
totalValue=package.flags.good_1_flag*value[0]+package.flags.good_2_flag*value[1]
+package.flags.good_3_flag*value[2]+package.flags.good_4_flag*value[3]
+package.flags.good_5_flag*value[4];
if(maxValue<totalValue)
{
maxValue=totalValue;
position=state;
}
}
}
package.state=position;
printf("maxValue=%d\ngood state:%d %d %d %d %d \n",maxValue,package.flags.good_1_flag,
package.flags.good_2_flag,package.flags.good_3_flag,package.flags.good_4_flag,package.flags.good_5_flag);
return 0;
}
运行结果
蛮力法解决0_1背包问题新思路-——利用C语言位域类型的更多相关文章
- Python基于回溯法解决01背包问题实例
Python基于回溯法解决01背包问题实例 这篇文章主要介绍了Python基于回溯法解决01背包问题,结合实例形式分析了Python回溯法采用深度优先策略搜索解决01背包问题的相关操作技巧,需要的朋友 ...
- 中途相遇法 解决 超大背包问题 pack
Description [题目描述] 蛤布斯有n个物品和一个大小为m的背包,每个物品有大小和价值,它希望你帮它求出背包里最多能放下多少价值的物品. [输入数据] 第一行两个整数n,m.接下来n行每行两 ...
- 0-1背包问题蛮力法求解(c++版本)
// 0.1背包求解.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #define ...
- 拉链法解决Hash节点冲突问题
<?php /* * hash::拉链法解决hash节点存储冲突问题 * ::2014-07-02 * ::Small_Kind */ class small_hash { private $s ...
- 算法——蛮力法之选择排序和冒泡排序c++实现
这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...
- 链表法解决hash冲突
/* @链表法解决hash冲突 * 大单元数组,小单元链表 */ #pragma once #include <string> using namespace std; template& ...
- 【优化算法】变邻域搜索算法解决0-1背包问题(Knapsack Problem)代码实例 已
01 前言 经过小编这几天冒着挂科的风险,日日修炼,终于赶在考试周中又给大家更新了一篇干货文章.关于用变邻域搜索解决0-1背包问题的代码.怎样,大家有没有很感动? 02 什么是0-1背包问题? 0-1 ...
- 拉链法解决hashtable冲突问题
拉链法解决冲突.拉链法解决冲突的做法是将所有的相同Hash值的key放在一个链表中,比如key3和key14在hash之后都是0,那么在数组的键为0的地方存储这两个值,形式是链表.如果不能理解我的文字 ...
- 利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
原文地址 http://www.jb51.net/article/33640.htm 在通过Javascript实现客户端和服务端的交互时,有时候需要对操作系统进行判断,以便实现不同操作系统下的兼容性 ...
随机推荐
- MacBook设置终端颜色,补全忽略大小写,设置命令别名alias,设置vim,设置显示git分支
1.启用终端颜色 修改配置文件 $ vim .bash_profile #enables colorin the terminal bash shell export export CLICOLOR= ...
- hdu 5852 :Intersection is not allowed! 行列式
有K个棋子在一个大小为N×N的棋盘.一开始,它们都在棋盘的顶端,它们起始的位置是 (1,a1),(1,a2),...,(1,ak) ,它们的目的地是 (n,b1),(n,b2),...,(n,bk). ...
- lower_bound/upper_bound example
http://www.cplusplus.com/reference/algorithm/upper_bound/左闭右开 Return iterator to lower bound Returns ...
- pycharm 取消自动保存
pycharm默认是自动保存的,习惯自己按 ctrl + s 的可以进行如下设置: 菜单File -> Settings... -> Appearance & Behavior - ...
- P2043 质因子分解
P2043 质因子分解 题目描述 对N!进行质因子分解. 输入输出格式 输入格式: 输入数据仅有一行包含一个正整数N,N<=10000. 输出格式: 输出数据包含若干行,每行两个正整数p,a,中 ...
- UIScrollView原理
我是Mike Ash的Let’s Build…系列文章的忠实粉丝,在这一系列文章中他从头设计Cocoa的控件来解释他们的工作原理.在这里我要做一点类似的事情,用几行代码来实现我自己的滚动试图.不过首先 ...
- C++持有Object-C对象时容易内存泄露
在IOS项目中,可以将C++与Object-C混编,不过必须放在实现文件.mm中. 在.mm中,我们可能创建了一个C++对象A,而它持有一个Object-C对象B作为成员变量.当A对象被释放掉的时候, ...
- ICPC 2015 Shenyang Online-E-EXCITED DATAbase
题目描述 She says that any Pavarotti among the nightingales will serenade his mate while she sits on her ...
- bzoj千题计划137:bzoj [CQOI2014]危桥
http://www.lydsy.com/JudgeOnline/problem.php?id=3504 往返n遍,即单向2*n遍 危桥流量为2,普通桥流量为inf 原图跑一遍最大流 交换b1,b2再 ...
- Swing教程
//用多线程刷新状态 new Thread(new Runnable(){ @Override public void run() { try { for(int i=0;i<1000;i++) ...