国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

可以用貪心解決的背包問題

2019-11-08 03:16:15
字體:
來源:轉載
供稿:網友

      問題:在選擇物品i裝入背包時,可以選擇物品的一部分,而不一定要全部裝入背包。

      計算每種物品的單位重量價值作為貪心選擇的依據指標,選擇單位重量價值最高的物品,將盡可能多的該物品裝入背包,依此策略一直地進行下去,直到背包裝滿為止。

      在零一背包問題中貪心選擇之所以不能得到最優解原因是貪心選擇無法保證最終能將背包裝滿,部分閑置的背包空間使每公斤背包空間的價值降低了。

   

#include<iostream>   #include<stdio.h>using namespace std;   #define N 4  void knapsack(float M,float v[],float w[],float x[]);    int main()  {      float M=50;    //預處理:將單位重量價值按照從大到小的順序排好。	//背包所能容納的重量       float w[]={0,10,30,20,5};	//每種物品的重量      float v[]={0,200,400,100,10};    	//每種物品的價值     float x[N+1]={0};      //記錄結果的數組     knapsack(M,v,w,x);  	     for(int i=1;i<=N;i++)//	cout<<"["<<i<<"]:"<<x[i]<<endl;		PRintf("%d=%.2f/n",i,x[i]);  }    void knapsack(float M,float v[],float w[],float x[])  {      int i;      //物品整件被裝下      for(i=1;i<=N;i++)    {          if(w[i]>M)		break;           x[i]=1;          M-=w[i];      }       //物品部分被裝下      if(i<=N) 		x[i]=M/w[i];   } 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴彦县| 普宁市| 唐河县| 桐庐县| 根河市| 合川市| 晴隆县| 扬州市| 上饶县| 长治市| 宁国市| 洛宁县| 射阳县| 沿河| 方正县| 南乐县| 随州市| 开阳县| 塔河县| 汽车| 灵宝市| 盱眙县| 崇明县| 特克斯县| 栾川县| 集贤县| 苗栗市| 怀化市| 桂阳县| 乐至县| 晋州市| 太保市| 麻江县| 阳原县| 衡山县| 临漳县| 竹山县| 唐河县| 夹江县| 县级市| 泽普县|