【九度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 日