• 蛮力法解决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
    good state:%d  %d   %d  %d  %d  
    ",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;
    }
    

     运行结果

     

  • 相关阅读:
    AutoFac学习笔记
    AutoMapper学习笔记
    ROSLYN 查看C#方法执行次数
    log4net 动态创建文件名
    WPF可切换按钮,iOS风格
    咕咕咕
    贪吃的小J
    UK Day15
    UK Day15
    UK Day15
  • 原文地址:https://www.cnblogs.com/gaochaochao/p/8766408.html
Copyright © 2020-2023  润新知