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

思路1

  1. 升序排序,最后一项即为最大值,记录
  2. 遍历数组,累加所有与记录的最大值不同的元素

    代码1

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int n, a[101], s, x;
    int main()
    {
    cin >> n;
    for(int i = 0;i < n;++i)
        cin >> a[i];
    sort(a, a + n);x = a[n - 1]; //排序,记录最大值,注意下标从 0 开始
    for(int i = 0;i < n;++i)
        if(a[i] != x) s += a[i]; //a[i]不为最大值,累加
    cout << s;
    return 0;
    }

思路2

  1. 遍历数组,查找最大值
  2. 再次遍历数组,累加所有不为最大值的元素

    代码2

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int n, a[101], s, x;
    int main()
    {
    cin >> n;
    for(int i = 0;i < n;++i)
        cin >> a[i];
    for(int i = 0;i < n;++i)
        x = max(a[i], x); //查找最大值
    for(int i = 0;i < n;++i)
        if(a[i] != x) s += a[i]; //a[i]不为最大值,累加
    cout << s;
    return 0;
    }
posted @ 2021-07-14 18:13  5k_sync_closer  阅读(12)  评论(0编辑  收藏  举报  来源