本文主要是介绍小哼买书(明明的随机数通用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家好!我是啊哈磊的小粉粉
(在 there,我就 not 报上真名啦)
插一句哈,
蒟蒻第一次写题解,鼓励一下,点个赞再看呗?
今天呢,蒟蒻在啊哈星球上边看到了一个很棒滴题目,
在这里先与大家分享分享:
直上题目:
12001.小哼买书
小哼的学校要建立一个图书角,老师派小哼去找一些同学做调查,看看同学们都喜欢读哪些书。小哼让每个同学写出一个自己最想读的书的ISBN号(你知道吗?每本书都有唯一的ISBN号,不信话你去找本书翻到背面看看)。当然有一些好书会有很多同学都喜欢,这样就会收集到很多重复的ISBN号。小哼需要去掉其中重复的ISBN号,即每个ISBN号只保留一个,也就说同样的书只买一本(学校真是够抠门的)。然后再把这些ISBN号从小到大排序,小哼将按照排序好的ISBN号去书店去买书。请你协助小哼完成“去重”与“排序”的工作。
输入格式:
输入有2行,第1行为一个正整数,表示有n个同学参与调查(n<=100)。第2行有n个用空格隔开的正整数,为每本图书的ISBN号(假设图书的ISBN号在1~1000之间)。
输出格式:
输出也是2行,第1行为一个正整数k,表示需要买多少本书。第2行为k个用空格隔开的正整数,为从小到大已排好序的需要购买的图书ISBN号。
限制:
每个测试点1秒
样例 1 :
输入:
10
20 40 32 67 40 20 89 300 400 15
输出:
8
15 20 32 40 67 89 300 400
我的理解:
首先,这一道题其实是由 全国青少年信息学奥林匹克联赛(NOIP2006)普及组第一题《明明的随机数》 改编的,
当我们看到题目中的 “只能买一种” 就很容易可以想到
(如果这句话伤害到了你 ,我表示深深地歉意)
适合用桶排序来做 (“桶排序”如果不懂的可以查阅一下)
再看看数据,1000是完全够的,所以放心做吧,
但一定要记得,这一道题的编码相同的只需要输出一次就够了,所以就算有多个相同的也应该只输出一次,
(具体怎样看看代码吧)
来吧!直击code!
#include<stdio.h>
//用桶排序实现
int main() {int a[1001];int i;int n;//ISBN号总数int k=0;//去重后的ISBN号总数 int isbn;//用来暂存isbn号,约定 for(i=0;i<=1000;i++) {a[i]=0;}
// printf("输入ISBN号总数\n");scanf("%d",&n);
// printf("输入%d个ISBN号,中间用空格隔开\n",n);for(i=1;i<=n;i++) {scanf("%d",&isbn);
// a[isbn]++;//效果一样 a[isbn]=1;}
// printf("去重并从小到大排序的ISBN号如下:\n");for(i=1;i<=1000;i++) {if(a[i]!=0) {k++;}}printf("%d\n",k);for(i=1;i<=1000;i++) {if(a[i]!=0) {printf("%d ",i);}}printf("\n");return 0;
}
既然已经看到这了,不如点个赞再走吧!
这篇关于小哼买书(明明的随机数通用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!