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了,运行时间一样。

posted @ 2012-03-17 10:24  westfly  阅读(204)  评论(0编辑  收藏  举报