• 华为笔试——C++最高分问题


    题目介绍:现在输入一组数据,写入学生的考试分数。已知学生数为N,学生编号为1到N,且0<N<=30000,每个学生都有一个分数;操作数为M且0<M<5000。输入第一行为N M,接下来是1行N列数据代表学生的初试分数,接下来是M行操作数据。已知操作有两种,分为Q和U。一次操作的格式为 C A B,当C=Q时输出A到B(包括A和B)的学生最高分,当C=U时将ID为A的学生的分数写入为B。

    例:

    输入:

    5 7

    1 2 3 4 5

    Q 1 5

    U 3 6

    Q 3 4

    Q 4 5

    U 4 5

    U 2 9

    Q 1 5

    输出:

    5

    6

    5

    9

    分析:一开始是设想char一个m行3列的数组,但是考虑到ID和分数都可能不是个位数因此还是分别设置好了。查询指令中A不一定比B小这一点也要考虑到。

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int m, n;
     6     int result = 0;
     7     while (cin >> n >> m)
     8     {
     9         int *score = new int[n];
    10         for (int i = 0; i < n; i++)
    11         {
    12             cin >> score[i];
    13         }
    14         char *cha = new char[m];
    15         int *one = new int[m];
    16         int *two = new int[m];
    17         for (int i = 0; i < m; i++)
    18         {
    19             cin >> cha[i] >> one[i] >> two[i];
    20         }
    21         for (int i = 0; i < m; i++)
    22         {
    23             if (cha[i] == 'Q')
    24             {
    25                 if (two[i] > one[i])
    26                 {
    27                     for (int j = one[i] - 1; j <= two[i] - 1; j++)
    28                     {
    29                         if (score[j] >= result)
    30                         {
    31                             result = score[j];
    32                         }
    33                     }
    34                 }
    35                 else {
    36                     for (int j = two[i] - 1; j <= one[i] - 1; j++)
    37                     {
    38                         if (score[j] >= result)
    39                         {
    40                             result = score[j];
    41                         }
    42                     }
    43                 }
    44                 cout << result << endl;
    45                 result = 0;
    46             }
    47             if (cha[i] == 'U')
    48             {
    49                 score[one[i] - 1] = two[i];
    50             }
    51         }
    52     }
    53 }

    结果:

  • 相关阅读:
    Cardiogram
    Increasing Speed Limits HDU
    Beaver Game CodeForces
    C++LeetCode:: Container With Most Water
    C++ leetcode::Reverse Integer
    C++ leetcode::ZigZag Conversion
    C++ leetcode Longest Palindromic Substring
    C++ leetcode Longest Substring Without Repeating Characters
    Faster RCNN
    C++ Leetcode Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/ljy1227476113/p/9696821.html
Copyright © 2020-2023  润新知