本文共 790 字,大约阅读时间需要 2 分钟。
主要思想:输入的分数只可能是0到100的101种整数。我们为每一种可能分别计数,便能在输入结束时得知每一种分数的重复情况。
#includeint main(){ int n; while(scanf("%d",&n)!=EOF&&n!=0){ int Hash[101]={0}; //用此数组记录各种分数出现的次数 for(int i=1;i<=n;i++){ int x; scanf("%d",&x); Hash[x]++; } int x; scanf("%d",&x); printf("%d\n",Hash[x]); } return 0;}
主要思想 偏移量
由于输入数的区间是-500000,到+500000.因此需要将其对应到数组0到1000000的下标
要加上偏移量
#include#define offset 500000int hash[1000001];int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ for(int i=-500000;i<=500000;i++){ hash[i+offset]=0; } for(int i=1;i<=n;i++){ int x; scanf("%d",&x); hash[x+offset]=1; } for(int i=500000;i>=-500000;i--){ if(hash[i+offset]==1){ printf("%d",i); m--; if(m!=0)printf(" "); else { printf("\n"); break; } } } }}
转载地址:http://znssi.baihongyu.com/