社区讨论

我这个可以通过样例,但是却给我零分

P2240【深基12.例1】部分背包问题参与者 3已保存回复 19

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
19 条
当前快照
1 份
快照标识符
@locuz6fi
此快照首次捕获于
2023/10/30 20:10
2 年前
此快照最后确认于
2023/11/05 06:44
2 年前
查看原帖
C
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int N,T,i,j;
	double sum=0;
	int p[1010],w[1010];   //读入价值和重量 
	double q[1010];         //单位重量的价值 
	scanf("%d %d",&N,&T);   //读入金币堆数,和背包最大承重 
	for(i=0;i<N;i++)
	{
		scanf("%d %d",&w[i],&p[i]);
	}
	for(i=0;i<N;i++)
	{
		q[i]=p[i]/w[i];  //计算单位重量的价值 
	}
	for(i=0;i<N;i++)
	{
		if(T<=0)
		{
			break;
		} 
		if(T<w[i])
		{
			sum+=T*q[i];
		}
		else
		{
			sum+=w[i]*q[i];
		}
		T=T-w[i];
	}
	printf("%.2lf",sum);
	return 0;
}

回复

19 条回复,欢迎继续交流。

正在加载回复...