Cxw1234a 2022-02-15 19:35 采纳率: 42.9%
浏览 29

华为2016年的机试题的C语言解法,是哪里没考虑到导致用例不通过呢

题目:
teacher想知道从某某同学当中,分数最高的是多少,现在请你编程模拟teacher的询问。当然,teacher有时候需要更新某位同学的成绩.
每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
学生ID编号从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询问操作,假设A<B,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。

注意:输入包括多组测试数据。
代码:

#include<stdio.h>
int get_max(int score[],int j,int k);
int main(void)
{
    int N,M;
    int score[30000] = {0};
    int output[5000] = {0};
    int i,j,k,temp;
    int q_num = 0;
    char ch;
    if( (scanf("%d %d",&N,&M)) == 2 )
    {
        for(i=0; i<N; i++)
           scanf("%d",&score[i]);
        for(i=0; i<M; i++)
        {
            scanf(" %c %d %d",&ch,&j,&k);
            if(ch == 'Q')
            {
                if(j>k)
                {
                    temp = j;
                    j = k;
                    k = temp;
                }
                output[q_num] = get_max(score,j,k);
                q_num++;
            }
            else if(ch == 'U')
            {
                score[j-1] = k;
            }
            else
            {
                continue;
            }
        }
    }
    for(i=0; i<q_num; i++)
        printf("%d\n",output[i]);
    return 0;
}

int get_max(int score[],int j,int k)
{
    int max = score[j-1];
    int i;
    for(i=j; i<k; i++)
    {
        if(score[i]>max)
            max = score[i];
    }
    return max;
}

  • 写回答

1条回答 默认 最新

  • 谛凌 2022-02-15 20:00
    关注

    题主,请问11行的代码啥意思呀
    if( (scanf("%d %d",&N,&M)) == 2 )

    评论

报告相同问题?

问题事件

  • 创建了问题 2月15日

悬赏问题

  • ¥15 做一个简单项目,用Python分析共享单车的数据
  • ¥20 在使用CESM2.2.0模型进行case.submit过程中出现如下错误(关键词-Map)
  • ¥15 有办法改变通过wifi进入的网站的设置吗
  • ¥15 所以到底怎么算!算到凌晨五点都算不出来!
  • ¥15 label_studio
  • ¥15 请教如何phython发邮件
  • ¥15 linux系统安装问题
  • ¥15 路径规划如何采用矢量法让他们尽量在一个方向
  • ¥15 crypto 一道rsa解密题
  • ¥15 survIDINRI已将生存时间转为数值变量,仍错误 Time variable is not numeric。