pat a 1070

题目
pata1070
题目思路
题目可以利用贪心算法的思想,按照单价对月饼进行排序,之后依次按单价从低到高的顺序购买。需要注意的是输入的需求量m也要用浮点型来记录,不然会有一个点无法通过,我试了好久之后看晴神的《算法笔记》才改正过来。
参考代码

#include<iostream>
#include<algorithm> 

using namespace std;
typedef struct{
	float a;
	float pr;
}cu;
bool cmp(cu p1,cu p2);

int main()
{
	
	int n,k=0;
	float b,z,m=0;

	cin>>n>>m;
	cu p[n];
	for(int i=0;i<n;i++)
	{
		scanf("%f",&p[i].a);
	}
	for(int i=0;i<n;i++)
	{
		scanf("%f",&b);
		p[i].pr=b/p[i].a;
	}
	sort(p,p+n,cmp);
	while(m!=0&&k<n)
	{
		if(p[k].a>m)
		{
			z+=m*p[k].pr;
			m=0;
		}
		else
		{
			z+=p[k].a*p[k].pr;
			m-=p[k].a; 
			k++;
		}
	}
	printf("%.2f",z);
	
	return 0;
	
}
bool cmp(cu p1,cu p2)
{
	
	return p1.pr>p2.pr; 
	
}
发布了27 篇原创文章 · 获赞 0 · 访问量 392

猜你喜欢

转载自blog.csdn.net/zz73zz76/article/details/104209604