数据结构实验之排序三:bucket sort C
数据结构实验之排序三:bucket sortTime Limit:?250 ms?Memory Limit:?65536 KiB Submit?Statistic Problem Description 根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推,大于等于100岁的老人全部按100岁计算。 Input ?输入第一行给出一个正整数N(<=5000000),随后连续给出N个整数表示每个人的年龄,数字间以空格分隔。 Output ?按年龄递增的顺序输出每个年龄的人口数,人口数为0的不输出,每个年龄占一行,数字间以一个空格分隔,行末不得有多余空格或空行。 Sample Input 10 16 71 17 16 18 18 19 18 19 20 Sample Output 16 2 17 1 18 3 19 2 20 1 71 1 Hint #include #include #include int a[5100000]; int main() { int n,i,x; scanf("%d",&n); memset(a,sizeof(a)); for(i=0; i { scanf("%d",&x); a[x]++;//桶排法 } int s=0; for(i=100; i<300; i++)//考虑到老人们的年纪也就在100~200之间我这还是夸大啦哈哈哈,以防止他出现刁遵的数据嘛~ { if(a[i]>0) s=s+a[i];//题目中提到大于等于100岁的老人全部按100岁计算 } a[100]=s; for(i=0; i<=100; i++) { if(a[i]>0) printf("%d %dn",a[i]); } return 0; } 非常简单一道题目哈但是要注意把文中数据巧妙排列~桶排是一个解决这种问题不错的方法,还要学习一下暴力枚举的方法~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |