贪心思想是:数据排序的贪心方式
进行n-1次甲方 每次最小的俩个和进入队列,然后将每次和相加
#include<bits/stdc++.h>
using namespace std;
struct node
{
int x;
bool operator<(const node &a)const
{
return x > a.x;//优先队列中和结构体排序不一样
}
} num;
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
priority_queue<node>que;
for(int i=0; i<n; i++)
{
scanf("%d",&num.x);
que.push(num);
}
int sum=0;
for(int i=0; i<n-1; i++)
{
node n1,n2;
n1=que.top();
que.pop();
n2=que.top();
que.pop();
int t=n1.x+n2.x;
sum+=t;
num.x=t;
que.push(num);
}
cout<<sum<<endl;
}
}

本文探讨了使用贪心算法解决数据排序问题的方法,通过优先队列实现每次选择最小两个数进行合并,最终达到最小化总和的目标。代码示例采用C++实现,展示了如何利用结构体和优先队列来优化算法。
327

被折叠的 条评论
为什么被折叠?



