Fence Repair
农夫约翰为了修理栅栏,要将一块很长的木板分割为N块,准备切成的木板的长度为L1,L2......Ln。未切割前木板的长度等于切割后木板的总和,每次切断木板时,需要的开销为这块木板的长度,,例如长度为21的木板要切成长度为8、5、8的三块木板,长为21的木板切成长为13和8时,开销为21,再将长度13的木板切成长度为5和8时开销为13,于是总的开销为34。代码如下: #include <iostream> #include<algorithm> #include<math.h> using namespace std; typedef long long ll; int main() { int MAX_N=3; int N,L[MAX_N];//要求分割为N块,输入数组的长度 cout<<"N="; cin>>N; cout<<"L={"; for(int i=0;i<MAX_N;i++) { cin>>L[i]; // cout<<",\n"<<endl; } cout<<"}"; ll ans=0; //直到计算到木板为1块为止 while(N>1) { //求出最短的板mii1和次短板mii2 int mii1=0,mii2=1;//初始化 if(L[mii1]>L[mii2]) swap(mii1,mii2);//比较最短和最长的,然后交换位置保证最小 for(int i