题目描述:
小Q和牛博士在玩一个石子合并的游戏,初始一共有n堆石子,每堆石子有w[i]个石子。小Q和牛博士他们需要对石子堆进行合并,每次他们可以任意选择两堆石子进行合并。一堆有x个石子的石子堆和一堆有y个石子的石子堆合并将得到一堆x+y个石子的石子堆,这次合并得分为x*y,当只剩下一堆石子的时候游戏结束。
小Q和牛博士希望采取优秀的策略获得最大得分,希望你能来帮他们算算最大得分多少。
主要是理解不论什么顺序最后的结果一致,代码很简单.参考:Dr.A.Clef的题解
代码:
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
int pre = scan.nextInt();
int cur, res = 0;
for(int i = 1; i < num; i++){
cur = scan.nextInt();
res += pre * cur;
pre = pre + cur;
}
System.out.print(res);
}
}