求助大佬,为什么只过第一个点啊~
查看原帖
求助大佬,为什么只过第一个点啊~
505810
lhj666楼主2021/5/10 14:04
#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
    int T, bag = 0, N, len;
    double wealth[100] = { 0 }, weigth[100] = { 0 }, rate[100] = { 0 }, sum = 0;
    cin >> N >> T;
    for (int i = 0; i < N; i++)
    {
        cin >> weigth[i] >> wealth[i];
        rate[i] = wealth[i] / weigth[i];
    }
    len = N;
    while (bag <= T&&len)
    {
        int max = rate[0],ret = 0;
        for (int i = 0; i < N; i++)
        {
            if (max < rate[i])
            {
                max = rate[i];
                ret = i;
            }
        }
        if (bag + weigth[ret] > T)
        {
            sum += (T - bag) * rate[ret];
            break;
        }
        sum += wealth[ret];
        rate[ret] = 0;
        bag += weigth[ret];
        len--;
    }
    cout << fixed << setprecision(2);
    cout << sum;
    return 0;
}
2021/5/10 14:04
加载中...