先确定最大值,再累加所有不等于最大值的序列元素。
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;
}复杂度
时间复杂度为
总结
题意要求排除的是所有最大值,不只是其中一个。