zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20)

    PAT (Basic Level) Practise (中文)-1038. 统计同成绩学生(20)    http://www.patest.cn/contests/pat-b-practise/1038

    本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出。

    输入格式:

    输入在第1行给出不超过105的正整数N,即学生总人数。随后1行给出N名学生的百分制整数成绩,中间以空格分隔。最后1行给出要查询的分数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。

    输出格式:

    在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。

    输入样例:

    10
    60 75 90 55 75 99 82 90 75 50
    3 75 90 88
    

    输出样例:

    3 2 0



    这道题,题目简洁,信息类别少,数据量小,input简单,output简单。
    我见过有人写了一百多行的代码,功能很全,按分数排序、每一分数值的统计、二分查找某一分数,每一个子功能都很优化,是段很完美的代码。
    但是想一下,我们做这道题时,是在锻炼自己的编程能力?回忆自己学过的算法?还是为了解决一个问题?

    考试时这么干毕竟耗时耗力,并且处理复杂,一旦出错,要排查很多地方。
    分析:这道题要求的结果是指定分数的学生人数,也就是有效信息只是一个分数和这个分数的学生人数。
    所以我们只需要设法保存这两个信息就可以了。为了节省时间,最简单的方法就是用分数值作下标。而分数只可能取值0~100,所以开一个int [101]即可。而学生总人数不超过100000,int足够使用了。

    省时省力省内存,并不能再精简了,努力做一个精简主义的孩子,省感情。
     
     1 #include<cstdio>
     2 
     3 int main()
     4 {
     5     int fenshu[101]={0},chafen=0;
     6     int num=0,temp=0;
     7     scanf("%d",&num); 
     8     for(int i=0;i<num;i++) 
     9     {
    10             scanf("%d",&temp);
    11             if(0<=temp && temp<=100) fenshu[temp]++;
    12     }
    13     scanf("%d",&num);  
    14     for(int i=0;i<num;i++)
    15     {
    16             scanf("%d",&chafen);
    17             if(i) printf(" %d",fenshu[chafen]);
    18             else printf("%d",fenshu[chafen]);
    19     }    
    20     return 0;    
    21 }


    我已经原谅自己并不能再渣的英语水平了。。。I AM WHAT I AM...



  • 相关阅读:
    JavaWeb笔记
    Session案例_登录注销
    会话
    Cookie入门
    jsp入门
    if else优化
    cheap-source-map--不显示源码 、source-map--显示源码 、 eval--最快的编译办法
    npm run dev 克隆报错
    $emit和$on的用法
    npm
  • 原文地址:https://www.cnblogs.com/asinlzm/p/4442025.html
Copyright © 2011-2022 走看看