求助,蒟蒻的Wa了四个,一句句注释了有人可以帮我看看吗?
查看原帖
求助,蒟蒻的Wa了四个,一句句注释了有人可以帮我看看吗?
523439
ACDG楼主2021/5/30 12:24
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 100;
int m[N], v[N];//存储质量和价值
double z[N];//存储性价比
int main()
{
	double N, T;
	cin >> N >> T;//输入个数和背包空间
	for (int i = 0; i < N; i++) {
		cin >> m[i] >> v[i];//输入钱堆
		z[i] = double(v[i]) / m[i];//并且计算性价比
	}
	double sum = 0;//计算总和
	while (T > 0)
	{
		double max = 0;
		int maxi = 0;
		bool o = 1;//记录是否还有钱堆(z[i]>0)
		for (int i = 0; i < N; i++)
			if (max < z[i])//寻找性价比最高的钱堆
			{
				o = 0;//还有钱堆可选
				max = z[i];
				maxi = i;
			}
		if (o)break;//没有钱堆可选则退出
		double t = T * z[maxi];//计算预想取多少钱
		if (v[maxi] >= t)//如果钱堆更多
		{
			sum += t;//则取出预想的钱
			break;//退出
		}
		else//如果钱堆钱取完背包还有空间
		{
			T -= m[maxi];//则减少背包空间
			sum += v[maxi];//积累钱
		}
		z[maxi] = 0;//将性价比设置为0
	}
	printf("%.2lf\n", sum);//输出累计和
	return 0;
}
2021/5/30 12:24
加载中...