- 4
- 0
- 约7.71千字
- 约 9页
- 2018-09-07 发布于天津
- 举报
普及组解题报告
NOIP2006复赛普及组解题报告
【第一题解题思想】:这道题属于容易题,但是题目难度大于NOIP2005和2004普及组第一题,和去年第二题难度相当后者略低一些。
解法1:我们可以用先去掉重复(读入第i个数,和他前面的i-1个数比较),然后用简单排序和冒泡排序排序,最后输出结果。
解法2:运用插入排序(略加修改),边排序边除掉重复。
解法3:直接排序,不去掉重复,计算出不重复的元素个数,输出不重复的元素即可。如果用数组A存储这些随机数,对于2到N个元素需要比较A是否等于A[i-1]。
解法4:开一个1到1000初值均为假的布尔数组A。用整型变量X读入N个随机数,赋A[X]的值为真。统计数组中值为真的元素个数即M,从i从1到1000输出A值为真的i。这种方法可以算作哈希表的简单应用。
解法5:很多人想到排序,效率大概是O(n^2)吧,其实还有个更简单的方法。用一个1到1000的数组储存每个数的出现情况,t每出现一次,a[t]=a[t]+1,而且,同时操作 if(a[t]1) 则总数=总数-1。然后从1到1000的循环,如果a≠0,输出,这样就根本不用排序了。大概这个应该是最优算法吧。O(n)的效率。
program random(input,output);
var a:array[1..1000] of integer; / ’a是记录数组,相当于数轴,与数一一对应,t
原创力文档

文档评论(0)