import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class BASIC28 {
//哈夫曼书
public static void main(String[] args) {
Scanner Scanner=new Scanner(System.in);
int n=Scanner.nextInt();
List<Integer> list=new ArrayList<Integer>() ;
for(int i=0;i<n;i++)
{
list.add(Scanner.nextInt());
}
//数组删除一个元素比较的麻烦(使用java里面的数组不能直接的删除一个元素)
//但是使用list就是可以直接的进行删除了是吗???
//原来使用list是可以直接的进行排序的
int sum=0;
while(list.size()!=1)
{
Collections.sort(list);
//要输出的是每次相加的这个和是吧,那么需要另外的开辟一个来进行存储???
list.add(list.get(0)+list.get(1));
sum+=list.get(0)+list.get(1);
//当把第一个元素删除之后,原本的第二个元素就是变为了第一个元素
//所以这个地方需要进行删除还是0
list.remove(0);
list.remove(0);
}
//最后一个数字就是计算得到的,已经在前面的基础上添加过了
System.out.println(sum);
}
}
根据可能的规则,直接使用list进行存储(因为提供直接移除元素的函数)
然后需要注意的就是list也是可以排序的,不过是Collections.sort()
然后数组的排序是Arrays.sort() 进行排序
最后就是在移除的时候,应该移除的是前面的两个最小的
但是当移除一个之后,后面的那个又会接着补充进来,所以这个时候就是这个样子的