フルーツをマージ
この質問には、選択ごとに後遺症はありません。貪欲なアルゴリズム
では、いくつかの注意点があります。山にマージした後、新しい山が形成されます。
ここでのマージされた並べ替えの2つの山は、この質問自体のアイデアによれば、挿入ソート
挿入ソートと考えるのは簡単です。
//这种插入排序是前面已知,将手中的牌插到前面
#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;
}