视频合并问题

题目描述

有多个视频需要合并为一个视频,假设一次只能将两个视频进行合并,合并需要的时间为该两个视频的时间之和。请计算将多个视频合并为一个视频需要的最小时间为多少?

输入

输入的第一行包含一个正整数n,表示共有n个视频需要合并。其中n不超过100。 第二行中有n个用空格隔开的正整数,分别表示n个视频的时间。

输出

输出包括一个正整数,即合并需要的最小时间。

样例输入
8
5 29 7 8 14 23 3 11
样例输出
#include <iostream>
#include <stdlib.h>
#include<stdio.h>
#include<string>
#define N 0x3f3f3f3f;
 
using namespace std;
int main(){
    int n;
    int ship[100];
    while(scanf("%d",&n)!=EOF){
    //cin>>n;
    for(int k=0;k<100;k++){
        ship[k]=N;
        }
    int length=n;
    int i=0;
    while(length--){
        cin>>ship[i++];
        }
        if(n==1){
        cout<<ship[0]<<endl;
     //   return 0;
    }  else  {
        int sum=0,min1,min2;
        for(int x=0;x<(n-1);x++){
            min1=min2=N;
            int m1,m2;
            for(int y=0;y<n;y++){
                if(ship[y]<min1){
                min1=ship[y];
                m1=y;
            }    
                if(min1<min2){
                    int temp=min1;
                    min1=min2;
                    min2=temp;
                    int temp2=m2;
                    m2=y;
                    m1=temp2;
                     
                    }
                }
                sum+=min1+min2;
                ship[m1]=min1+min2;
                ship[m2]=N;
            }
          //   system("pause");
    cout<<sum<<endl;
}    
 
}

 return 0;

}

你可能感兴趣的:(acm作业)