zoukankan      html  css  js  c++  java
  • 贪心算法 合并果子

    合并果子


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

    //这种插入排序是前面已知,将手中的牌插到前面
    #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;
    } 
    
  • 相关阅读:
    OCS 2007 R2下载资源整理
    Windows Server 2012 R2 WSUS 4.0 加速
    JavaScript入门(三)
    JavaScript入门(一)
    JavaScript入门(二)
    CSS基础
    古董代码
    自我介绍
    Android Activity的加载的模式
    Android 数字签名
  • 原文地址:https://www.cnblogs.com/serendipity-my/p/12672579.html
Copyright © 2011-2022 走看看