HDU 1235 统计同成绩学生人数
http://acm.hdu.edu.cn/showproblem.php?pid=1235
刚开始没有注意题目。效率不高。
数组直接开到N了。
View Code
#include <stdio.h>
#define MAX_ARRAY 1000
int main()
{
int scores[MAX_ARRAY];
int nTotal;
int focus;
int i;
while(scanf("%d",&nTotal) &&nTotal)
{
for(i = 0; i < nTotal; ++i)
{
scanf("%d",&scores[i]);
}
scanf("%d",&focus);
int count = 0;
for(i = 0 ; i < nTotal ; ++i)
if(scores[i] == focus)
++count;
printf("%d\n",count);
}
}
后来再想了下,发现可以用hash。
View Code
#include <stdio.h>
#include <memory.h>
#define MAX_ARRAY 101
int main()
{
int scores[MAX_ARRAY];
int nTotal;
int n;
int i;
while(scanf("%d",&nTotal) &&nTotal)
{
memset(scores,0,sizeof(scores));
for(i = 0; i < nTotal; ++i)
{
scanf("%d",&n);
++scores[n];
}
scanf("%d",&n);
printf("%d\n",scores[n]);
}
}
于是MAX_ARRAY 只开到101了。
两个都AC了,运行时间一样。