1 solutions

  • 2
    @ 2025-2-7 11:47:39

    看到还没有题解,我来!!!!!!!!!image

    #include <iostream>
    #include <algorithm>
    using namespace std;
    bool cmp(int a,int b){
        return a<b;
    }
    int main(){
        int n;
        cin>>n;
        int a[105];
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        sort(a+1,a+1+n,cmp);
        int sum=0;
        for(int i=1;i<n;i++){
            int flag=0;
            for(int j=i+1;j<=n;j++){
                if(a[j]==a[i]){
                    flag=1;
                }
            }
            if(flag==0){
                sum+=a[i];
            }
        }
        cout<<sum;
        return 0;
    }
    

    此题说了“不与最大数相同的数字之和”,告诉我们两个信息:

    ①数字之和中不包括最大的数。

    ②最大的数可能有多个。

    理解了题目之后就好做多了。

    image

    首先定义数字个数的变量,输入;

    其次定义数组,输入数组;

    然后进行排序,用啥排序都行,本人比较喜欢sort排序;

    接着定义一个记总和的变量,别忘了把这个变量初始化为0;

    最重要,也是本题中最难的一步来了—————那就是—————判断是否有重复的最大的数字! 建议用以下代码

    for(int i=1;i<n;i++){
            int flag=0;//定义标记变量
            for(int j=i+1;j<=n;j++){
                if(a[j]==a[i]){
                    flag=1;//如果有同样的最大的数字,就把标记变量的值更换。
                }
            }
            if(flag==0){
                sum+=a[i];
            }//最后判断相加。
        }
    }
    

    这或许是我打过的最长的题解了,QWQ

    如果觉得不错 image 那就挺好的 image

    如有错误,欢迎指出!!!!

    Information

    ID
    719
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    6
    Tags
    (None)
    # Submissions
    95
    Accepted
    26
    Uploaded By