编程第五六天

来源:互联网 发布:java语言分段函数 编辑:程序博客网 时间:2024/05/01 22:27

c++实现贪心算法

该贪心算法实现可分割的问题

#include<iostream>
using namespace std;
int Find_Max(float i[10],int num) //返回价值最大下标
{
    int max_index=0;
    int j;
    for(j=1;j<num;j++)
    {
        if(i[j]>i[0])
            max_index=j;
    }
    return max_index;
}
int main()
{
    float Value[10];
    float Weight[10];
    float Average[10];
    float WeightMax;
    float CurrentWeight=0;
    float ValueMax;
    int num;
    cout<<"请输入背包最大承重:"<<endl;
    cin>>WeightMax;
    cout<<"请输入物品个数:"<<endl;
    cin>>num;
    for(int i=1;i<=num;i++)
    {
        cout<<"请输入第"<<i<<"件物品的重量和价值:"<<endl;
        cin>>Weight[i-1];
        cin>>Value[i-1];
    }
    for(int i=0;i<num;i++)
    {
        Average[i]=Value[i]/Weight[i];//求出单位价值最高;
    }
    while(CurrentWeight<=WeightMax)
    {
        if(WeightMax-CurrentWeight>Weight[Find_Max(Average,num)])
            CurrentWeight=CurrentWeight+Weight[Find_Max(Average,num)];
        else
            CurrentWeight=CurrentWeight+Average[Find_Max(Average,num)]*(WeightMax-CurrentWeight);
        Average[Find_Max(Average,num)]=0;


    }
    cout<<"背包最大价值为"<<CurrentWeight<<endl;
    return 0;
}

0 0
原创粉丝点击