背包问题

xiaoxiao2022-06-11  64

#include<iostream> using namespace std; #define MAXLEN 10 void Sort(int n,float v[],float w[]){     for(int i=1;i<=n;i++)         for(int j=i+1;j<=n;j++){             if(v[j]/w[j]>=v[i]/w[i]){                 swap(v[i],v[j]);                 swap(w[i],w[j]);             }         } } void Knapsack(int n,float M,float v[],float w[],float x[]) {     Sort(n,v,w);     int i;     for (i=1;i<=n;i++) x[i]=0;     float c=M;     for (i=1;i<=n;i++) {         if (w[i]>c) break;         x[i]=1;         c-=w[i];     }     if (i<=n) x[i]=c/w[i];//最后一个物品选择部分装入 } int main(){     float v[MAXLEN]={0,60,120,50},w[MAXLEN]={0,20,30,10};     float x[MAXLEN];     float M=50;     int n=3;     Knapsack(n,M,v,w,x);     cout<<"最大值:"<<v[1]*x[1]+v[2]*x[2]+v[3]*x[3]<<endl;     return 0; }  

转载请注明原文地址: https://www.6miu.com/read-4930484.html

最新回复(0)