【九度OJ】题目1018:统计同成绩学生人数 解题报告

【九度OJ】题目1018:统计同成绩学生人数 解题报告

标签(空格分隔): 九度OJ


[LeetCode]

http://ac.jobdu.com/problem.php?pid=1018

题目描述:

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

输入:

测试输入包含若干测试用例,每个测试用例的格式为

第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数

当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。

输出:

对每个测试用例,将获得给定分数的学生人数输出。

样例输入:

3
80 60 90
60
2
85 66
0
5
60 75 90 55 75
75
0

样例输出:

1
0
2

Ways

心想按照书上写的直接搞个Hash不就完了?于是有了以下代码:

#include <stdio.h>

int main(){

    int score[101] = {0};
    int n;
    int temp;
    int search;

    while(scanf("%d", &n) != EOF && n != 0){

        for(int i=0; i<n; i++){
            scanf("%d", &temp);
            score[temp]++;
        }

        scanf("%d", &search);

        printf("%d\n", score[search]);

    }
    return 0;
}

竟然一直WA,好气,感觉也没什么错。和书上的答案比较了以下也没发现有问题。

后来百度下才明白,忘记在每个循环里把数组重新复原了!!好气!

于是有:

#include <stdio.h>
#include <cstring>

int main() {


    int n;
    int temp;
    int search;

    while (scanf("%d", &n) != EOF && n != 0) {

        int score[101] = {0};

        for (int i = 1; i <= n; i++) {
            scanf("%d", &temp);
            score[temp]++;
        }

        scanf("%d", &search);

        printf("%d\n", score[search]);

    }
    return 0;
}

这就A了。

Date

2017 年 2 月 16 日

posted @ 2017-02-26 09:49  负雪明烛  阅读(31)  评论(0编辑  收藏  举报