不与最大数相同的数字之和

GitHub跳转原题关系图返回列表

先确定最大值,再累加所有不等于最大值的序列元素。

OJ: noi_openjudge

题目 ID: ch0109-07

难度:入门

标签:数组最值python

日期: 2026-07-30 23:01

题意

求整数序列中所有不等于最大值的元素和。

思路

先用 max 找出最大值,再生成器求和时过滤所有等于它的元素。

代码

cpp
#include <cstdio>
#include <cstring>

#define inf 0x7f7f7f7f

int n;
int a[200];
int max = -inf;
int main(){
    scanf("%d",&n);
    int i;
    for (i=1;i<=n;i++){
        scanf("%d",&a[i]);
        if( max  < a[i])
            max = a[i];
    }
    int sum = 0;
    for (i=1;i<=n;i++){
        if( max != a[i])
            sum += a[i];
    }
    printf("%d\n",sum);
    return 0;
}

复杂度

总结

Python代码

python
count = int(input())
numbers = list(map(int, input().split()))
maximum = max(numbers)
print(sum(number for number in numbers if number != maximum))

C++代码

cpp
#include <cstdio>
#include <cstring>

#define inf 0x7f7f7f7f

int n;
int a[200];
int max = -inf;
int main(){
    scanf("%d",&n);
    int i;
    for (i=1;i<=n;i++){
        scanf("%d",&a[i]);
        if( max  < a[i])
            max = a[i];
    }
    int sum = 0;
    for (i=1;i<=n;i++){
        if( max != a[i])
            sum += a[i];
    }
    printf("%d\n",sum);
    return 0;
}

复杂度

时间复杂度为 O(n)O(n),序列空间为 O(n)O(n)

总结

题意要求排除的是所有最大值,不只是其中一个。