废话不说了,直接上代码

#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语言位域类型的更多相关文章

  1. Python基于回溯法解决01背包问题实例

    Python基于回溯法解决01背包问题实例 这篇文章主要介绍了Python基于回溯法解决01背包问题,结合实例形式分析了Python回溯法采用深度优先策略搜索解决01背包问题的相关操作技巧,需要的朋友 ...

  2. 中途相遇法 解决 超大背包问题 pack

    Description [题目描述] 蛤布斯有n个物品和一个大小为m的背包,每个物品有大小和价值,它希望你帮它求出背包里最多能放下多少价值的物品. [输入数据] 第一行两个整数n,m.接下来n行每行两 ...

  3. 0-1背包问题蛮力法求解(c++版本)

    // 0.1背包求解.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream>   #define ...

  4. 拉链法解决Hash节点冲突问题

    <?php /* * hash::拉链法解决hash节点存储冲突问题 * ::2014-07-02 * ::Small_Kind */ class small_hash { private $s ...

  5. 算法——蛮力法之选择排序和冒泡排序c++实现

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

  6. 链表法解决hash冲突

    /* @链表法解决hash冲突 * 大单元数组,小单元链表 */ #pragma once #include <string> using namespace std; template& ...

  7. 【优化算法】变邻域搜索算法解决0-1背包问题(Knapsack Problem)代码实例 已

    01 前言 经过小编这几天冒着挂科的风险,日日修炼,终于赶在考试周中又给大家更新了一篇干货文章.关于用变邻域搜索解决0-1背包问题的代码.怎样,大家有没有很感动? 02 什么是0-1背包问题? 0-1 ...

  8. 拉链法解决hashtable冲突问题

    拉链法解决冲突.拉链法解决冲突的做法是将所有的相同Hash值的key放在一个链表中,比如key3和key14在hash之后都是0,那么在数组的键为0的地方存储这两个值,形式是链表.如果不能理解我的文字 ...

  9. 利用Javascript判断操作系统的类型实现不同操作系统下的兼容性

    原文地址 http://www.jb51.net/article/33640.htm 在通过Javascript实现客户端和服务端的交互时,有时候需要对操作系统进行判断,以便实现不同操作系统下的兼容性 ...

随机推荐

  1. EndNote文献悬挂缩进的设置方法及设置参考文献序号后面空格长度

    一.EndNote文献悬挂缩进的设置方法 写论文时使用EndNote来插入和管理参考文献是一种非常方便的方法,但有时不同的杂志要求插入的文献要求第二行缩进格式,或者不缩进. 1.在EndNote中Ed ...

  2. spring cloud-zuul的Filter详解(十一)

    本文转自:http://blog.csdn.net/liuchuanhong1/article/details/62236793 关于网关的作用,这里就不再次赘述了,我们今天的重点是zuul的Filt ...

  3. python 生成器和迭代器介绍

    在正式接触生成器之前,我们先来了解一些概念 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个迭代获取,可以用in.not in关键字判断元素是否包含在容器中. ...

  4. VLOOKUP函数将一个excel表格的数据匹配到另一个表中

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  5. 使用Java API的5个技巧

    原文出处:CSDN邓帅 本文介绍了一些关于Java API安全和性能方面的简单易用的技巧,其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议. 程序员都喜欢使用A ...

  6. c++ 前置++与后置++的区别

    用C++编程的都知道,C++提供了一个非常强大的操作符重载机制,利用操作符重载,我们可以为我们自定义的类增加更多非常有用的功能.不过,C++也有限制,就是当我们为自定义的类重载操作符时,重载操作符的含 ...

  7. Python入门系列教程(四)字典

    既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素 增 Dic = {'name':'沐风', 'city':'北京'} Dic['sex']='男' print Dic 删 del ...

  8. OI刷题录——hahalidaxin

    16-3-25  —— bzoj 2049 [Sdoi2008]Cave 洞穴勘测:LCT入门 bzoj 2002 [Hnoi2010]Bounce 弹飞绵羊:LCT Tsinsen A1303. t ...

  9. bzoj 5085: 最大——结论题qwq

    Description 给你一个n×m的矩形,要你找一个子矩形,价值为左上角左下角右上角右下角这四个数的最小值,要你最大化矩形 的价值. Input 第一行两个数n,m,接下来n行每行m个数,用来描述 ...

  10. git之存储(git stash)-------(二)

    关于git stash命令的使用方法网上一大把,我想记录的是我在使用过程中觉得实用及好用的: 当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,可以先将自己写好的代码,储存在一个箱 ...