10tps求条
查看原帖
10tps求条
1145476
wuboyan714楼主2024/9/16 11:31
#include <iostream>
#include <vector>
using namespace std;

int n, ans = 0;;
vector<int> a(n, -1);

void find_tow_min() {
    // 找出最小的一组数
    int min = 9999999, x = 0;
    for (int i = 1; i < n; i ++) {
        if (a[i] + a[i - 1] < min) {
            min = a[i] + a[i - 1];
            x = i - 1;
        }
    }

    // 合并最小的一组数
    for (int i = 0; i < n; i ++) {
        if (i == x) {
            a[i] = a[i] + a[i + 1];
        }
        else if (i > x) {
            a[i] = a[i + 1];
        }
    }

    // 缩短长度+记录答案
    ans += min;
    a[n - 1] = -1;
    n --;
}

int main() {
    cin >> n;

    for (int i = 0; i < n; i ++) {
        int m;
        cin >> m;
        a.push_back(m);
        // cin >> a[i];
    }

    while (a[1] != -1) {
        find_tow_min();
    }

    cout << ans;
    return 0;
}
/*
6
20
44
354
20
102
*/
2024/9/16 11:31
加载中...