又是一个贪心问题。
这里使用数组遍历来找到第一小与第二小的木板。后续会给出优先队列的实现方式。
//
// 047_fence repair.cpp
// changlle
//
// Created by user on 12/26/15.
// Copyright (c) 2015 user. All rights reserved.
//
#include <iostream>
#include <queue>
using namespace std;
int N=3;
int L[3]={8,5,8};
int main() {
int min1=0;
int min2=1;
int cost=0;
while(min2<N){
if (L[min1]>L[min2])
swap(L[min1],L[min2]);
for (int i=min2;i<N;i++){
if (L[i]<L[min1])
L[min1]=L[i];
else
if (L[i]<L[min2])
L[min2]=L[i];
}
cost=cost+L[min1]+L[min2];
L[min2]=L[min1]+L[min2];
min1++;
min2++;
}
cout<<cost<<endl;
return 0;
}