解题思路
1.可证明任意合并顺序所获得分均一样,简单模拟即可;
代码
#include <bits/stdc++.h> using namespace std; int main(){ int n; cin >> n; vector<int> w(n); for(int i = 0; i < n; i++){ cin >> w[i]; } int score = 0, sum = w[0]; for(int i = 1; i < n; i++){ //任意合并顺序得分均一样 score += sum * w[i]; //sum表示前一个石堆的石子个数 sum += w[i]; } cout << score; return 0; }