首页 > 编程语言 > 详细

贪心算法 合并果子

时间:2020-04-10 15:58:21      阅读:63      评论:0      收藏:0      [点我收藏+]

合并果子

技术分享图片
这道题,明显每一个选择都是无后效性的,明显的贪心算法
这道题有几个要注意的地方,合并成一堆之后会形成新的一堆,所以要再次排序,找最小的两堆合并
这里的重新排序,根据这道题本身的思想,很容易想到插入排序
插入排序:

//这种插入排序是前面已知,将手中的牌插到前面
#include<iostream>
#include<algorithm>
using namespace std;
int a[105];
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	//开始插入排序
	for(int i=1;i<n;i++)
	{
		for(int j=i-1;j>=0&&a[j]>a[j+1];j--)
		{
			swap(a[j],a[j+1]);
		}
	}
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<endl;
	}
	return 0; 
} 

这道题,明显要向后插入

#include<iostream>
#include<algorithm>
using namespace std;
int a[105];
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	sort(a,a+n);
	int res=0;
	for(int i=1;i<n;i++)
	{
		a[i]+=a[i-1];
		res+=a[i];
		for(int j=i+1;j<n&&a[j]<a[j-1];j++)
		{
			swap(a[j],a[j-1]);
		}
	}
	cout<<res<<endl;
	return 0;
} 

贪心算法 合并果子

原文:https://www.cnblogs.com/serendipity-my/p/12672579.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!