0-1背包问题的一种解法
来源:互联网 发布:星际淘宝网最新章节 编辑:程序博客网 时间:2024/06/05 08:29
背包问题就是求一定重量的最大价值,通过这句话,我想到了 “重权比”---重量/权值 ,一定重量,重权比越小。
源代码:
#include<stdio.h>struct WP//定义物品类型结构体包括以下:{intnum;//物品编号,floatweight;//物品重量,floatprice;//物品价值floatw_p;//重权比(重量/价值(权值))}goods[5],temp;//定义一个结构体数组,和一个用于交换的结构体变量void main(){int i,j;//循环变量float W=10.0,P=0.0;//重量上限 最大价值for(i=1;i<=5;i++)//为物品进行初始化,指出重量和价值{goods[i].num=i;printf("请输入第 %d 件物品的重量和价值,以逗号隔开: ",i);scanf("%f,%f",&goods[i].weight,&goods[i].price);//printf("%f",goods[i].price);}printf("物品描述如下:\n");//规范化输出物品的详细情况printf("编号重量价值重权比\n");for(i=1;i<=5;i++){goods[i].w_p=goods[i].weight/goods[i].price;printf("%d%.2f%.2f%.4f",goods[i].num,goods[i].weight,goods[i].price,goods[i].w_p);printf("\n");}for(i=1;i<=5;i++)//按照重权比的大小进行排序,按升序排for(j=i+1;j<=5;j++)if(goods[i].w_p>goods[j].w_p){//WP temp;temp=goods[i];goods[i]=goods[j];goods[j]=temp;}printf("编号重量价值重权比\n");//输出排序后的物品情况for(i=1;i<=5;i++){goods[i].w_p=goods[i].weight/goods[i].price;printf("%d%.2f%.2f%.4f",goods[i].num,goods[i].weight,goods[i].price,goods[i].w_p);printf("\n");}for(i=1;i<=5;i++)//取物品,使其价值最大if(goods[i].weight<=W){W-=goods[i].weight;P+=goods[i].price;}printf("价值最高为: %.2f \n",P);//输出最大价值}
暂时像这样上传着!
- 0-1背包问题的一种解法
- 一种背包问题的解法
- 0-1背包问题的各种解法
- 0/1背包问题解法
- 0-1背包问题的动态规划解法
- 0-1背包问题的动态规划解法
- 0-1背包问题的几种不同解法
- 0-1背包问题的动态规划解法
- 0-1背包问题的一维数组解法
- 0-1背包问题的动规解法
- 0-1背包问题--动态规划解法
- 0-1背包问题动态规划解法
- 0-1背包问题(多种解法)
- 0/1背包问题之穷举解法
- 糖果问题的一种解法
- 背包分组问题的解法
- 背包问题的解法源代码
- 背包问题的haskell解法
- UML 2----Sequence Diagram
- eclipse与jre的桥梁--path、关于程序import的包
- 黑马程序员_IO流概述
- 2013.11.19
- setjmp.h
- 0-1背包问题的一种解法
- Struts中forward与global-forward的区别
- 设置提示音
- Hadoop JobTracker提交job源码浅析
- shell 快捷键
- 网络蜘蛛核心代码c#版
- 20131119
- Linux下eclipse的安装
- android之support 支持者模式