题解 | #搬水果#

搬水果

https://www.nowcoder.com/practice/e4c775b0f3ee42a4bb72c26d2e1eef8a

#include<stdio.h>
#define maxsize 10000
int search(int a[], int m) {
    int mini = 0, min = a[0];
    for (int j = 1; j < m; j++) {
        if (a[j] < min) {
            min = a[j]; //记录最小值
            mini = j;
        }
    }
    a[mini] = a[m -
                1]; //在原数组中,移除这个最小值(用最后一个元素来覆盖)

    return min;
}
int main() {
    int m;
    int a[maxsize];
    while (scanf("%d", &m) != EOF) {
        int sum = 0, min1, min2;
        for (int i = 0; i < m; i++)
            scanf("%d", &a[i]);
        while (m > 1) {
            min1 = search(a, m); //最小值
            m--;               //在原数组中移除最小值。原数组中元素个数为m-1个
            min2 = search(a, m); //次小值最后下标m
            sum = min1 + min2 + sum; //累计
            a[m - 1] =min1+min2; //最小值和次小值的和作为原数组中的一个元素   m个元素   m-1
        }
        printf("%d\n", sum);


    }



    return 0;
}

全部评论

相关推荐

04-27 08:59
常州大学 Java
牛客139242382号:《两门以上汇编语言》
点赞 评论 收藏
分享
Rena1ssance_:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务