愤怒的小侯 2021-12-17 14:59 采纳率: 80%
浏览 26

遇到了几道C++的数组题,希望大 GOD解惑,最好有注释

小明和排队

描述:
小明现在喜欢上了排队,这天小明得到一个队列,队列里面每一个人都有身高和体重,小明想出这样一个问题,对于一个j位置的人,找到他左边第一个和他身高相同的人,假设这个人的位置为i ,那么j 位置的人得到的奖励为i 到 j之间(不包括 i 和j )所有人的体重和,小明想要知道这个队列中得到最多奖励的那个人的奖励是多少。但是小明不会做,聪明的你帮助小明解决这个问题吧。
输入格式
第一行输入一个n,表示队列的人数
接下来n行,每行两个数h和w,表示这个人的身高和体重
输出格式
输出一个数,表示最大奖励。
数据范围
1<=n<=1000000
1<=h,w<=1000
输入样例

5
10 20
20 10
20 30
10 10
20 20

输出样例

样例解释
第一个人,第二个人以及第三个人都得到0奖励第四个人得到10+30=40奖励
第五个人得到10的奖励

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-12-17 15:46
    关注

    把输入的人的身高和体重记录到数组,每输入一个人,则从数组已有数据中搜索第一个和他身高一样的人,然后将两个人位置之间的所有人的体重求和

    #include <iostream>
    using namespace std;
    #define MAX 1000000
    int main()
    {
        int n,i;
        cin>>n;
        int *sg = new int[n];
        int *tz = new int[n];
        for(i=0;i<n;i++)
        {
            cin>>sg[i]>>tz[i];
            for(int j=i-1;j>=0;j--)
            {
                if(sg[j] == sg[i])
                {
                    int sum = 0;
                    for(int k=j+1;k<i;k++)
                        sum += tz[k];
                    cout<<sum<<endl;
                    break;
                }
            }
        }
    
            return 0;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月17日