木板切割问题的优先队列实现方式。
在c++中,首先要定义一个从小到达的优先队列,参见c++代码。
//
// 077_fence repair(pq).cpp
// changlle
//
// Created by user on 12/30/15.
// Copyright (c) 2015 user. All rights reserved.
//
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int N=3;
int L[3]={8,5,8};
int sum=0;
int main() {
priority_queue<int, vector<int>,greater<int>> que;
for (int i=0;i<N;i++)
que.push(L[i]);
while(que.size()>1) {
int l1=0;
int l2=0;
l1=que.top();
que.pop();
l2=que.top();
que.pop();
sum=sum+l1+l2;
que.push(l1+l2);
}
cout<<sum<<endl;
return 0;
}