编程基础之顺序查找

合集下载

c语言中常用的查找

c语言中常用的查找

c语言中常用的查找C语言中常用的查找引言:在编程中,查找是一项非常常见且重要的操作。

无论是在数组、链表、树还是图等数据结构中,都需要进行查找操作来寻找特定的数据或者确定某个元素的存在与否。

C语言提供了多种查找算法和数据结构,本文将介绍C语言中常用的查找方法。

一、线性查找线性查找是最简单的查找方法之一,也称为顺序查找。

其基本思想是从数据集合的起始位置开始逐个比较待查找元素与集合中的元素,直到找到目标元素或者遍历完整个集合。

在C语言中,可以使用for循环或者while循环实现线性查找。

线性查找的时间复杂度为O(n),其中n为数据集合中元素的个数。

二、二分查找二分查找又称为折半查找,是一种高效的查找算法,但要求数据集合必须是有序的。

其基本思想是将数据集合分为两部分,然后通过与目标元素的比较来确定目标元素在哪个部分中,从而缩小查找范围。

重复这个过程直到找到目标元素或者确定目标元素不存在于数据集合中。

二分查找的时间复杂度为O(logn),其中n为数据集合中元素的个数。

三、哈希表查找哈希表是一种通过哈希函数将关键字映射到存储位置的数据结构,它能够以常数时间复杂度O(1)进行查找操作。

在C语言中,可以使用数组和链表的结合来实现哈希表。

哈希表的关键之处在于哈希函数的设计,良好的哈希函数能够将关键字均匀地映射到不同的存储位置,从而提高查找效率。

四、二叉搜索树查找二叉搜索树是一种常用的数据结构,它满足以下性质:对于任意节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。

在C语言中,可以使用指针和递归的方式来实现二叉搜索树。

通过比较目标值与当前节点的值,可以确定目标值位于左子树还是右子树中,从而缩小查找范围。

五、图的遍历在图的数据结构中,查找操作通常是指遍历操作。

图的遍历有两种方式:深度优先搜索(DFS)和广度优先搜索(BFS)。

深度优先搜索通过递归的方式依次访问图中的每个节点,直到找到目标节点或者遍历完整个图。

计算机软件技术编程基础 排序

计算机软件技术编程基础 排序

21
47
48
56
85
89
对于长度为n的序列,选择序列需要扫描n-1遍,每次扫 描均从剩余的子表中找出最小的元素,然后将最小的元 素与子表中的第一个元素进行交换。
比较次数:(n-1)+(n-2)+…+2+1=n(n-1)/2
交换次数:n-1 时间复杂度O(n2)
四 归并排序
基本思想:将两个或两个以上的有序表合并成一个新的有序表。 步骤: 将整个表看成n个有序子表,每个子表长度为1; 两两归并,得到长度为2的n/2个子表; 再两两归并,一直得到长度为n的有序表为止;
关键字最小的安置到最前面
对剩余的线性表重复操作 1 1 1 1 1 1 1 1 5 5 3 3 3 2 3 5 2 3 2 3 2 2 52 5 4 5 6 6 6 56 4 7 4 7 4 6 4 4 6 8 8 8 8 9 9 9 9
74 7 6 6 6 6 7 7
1
1
2
3
4
5
6
6
7
8
9
对线性表的每次来回操作都将最大的沉到表底,最小的像气 泡冒到表头。
2 希尔排序——缩小增量排序
基本步骤: 1 取一个正整数h1=n/2, 每隔步长h1取一个元素,放在一个组中,在 各组中进行插入排序。
0
7
1
19
2
24
3
13
4
31
5
8
6
82
7
18
8
44
9
63
10
5
11
29
h1=12/2
7 19 24 13 31 8 82 18 44 63 5 29

顺序查找的思路

顺序查找的思路

顺序查找的思路顺序查找是指从一个有序表或者无序表中,一个个地去查找给定的关键字,把符合条件的关键字找出来的一种方法。

它是最简单也是最基本的一种查找算法,是一种只要能够比较和排序的查找算法。

顺序查找的思路就是:从表的第一个元素开始,依次与给定的关键字比较,若比较成功,则表示找到了要查找的关键字;若比较失败,则比较下一个元素;如此反复,直到把表中所有元素都比较一遍为止,这样就完成了顺序查找。

顺序查找的优缺点优点:1、顺序查找是基于比较的查找方法,能够支持任意的数据类型,并且不依赖于数据的存储结构;2、实现起来比较简单,查找的效率也比较高;3、它能够用在无序和有序的表中。

缺点:1、查找效率是随着表的长度而增加的,当表的长度增加,查找的时间就会越长;2、对于大规模的表来说,它效率低,比较次数较多,查找速度也较慢;3、顺序表需要较多的存储空间。

顺序查找的实现1、首先要明确要查询的关键字,然后从顺序表的第一个元素开始;2、比较每一个元素与关键字是否相同,若相同则找到了要查找的关键字;3、若不相同,则将当前元素放到下一个元素进行比较,如此循环比较;4、如果顺序表的元素都比较完,却没有找到要查找的关键字,则表示查找失败,结束查找。

顺序查找的应用1、在编程语言中,我们经常用顺序查找来查找字符串;2、在数据库系统中,也会使用顺序查找来查找特定的数据;3、在文件搜索器中,也可以使用顺序查找来搜索文件;4、在编译器中,编译器会使用顺序查找来查找关键字;5、在网络资源中,也可以使用顺序查找来搜索想要的资源。

总结顺序查找是指一次比较一个元素,然后依次比较下一个元素,直到顺序表的所有元素都比较完为止,也就是要比较整张表。

它是一种简单易实现的查找算法,能够适用于无序和有序的表中,但是由于其时间复杂度较高,在大规模的表中查找效率不高,因此开发人员不会选择它。

因此,在开发实际应用程序时,应该根据实际的情况,根据需要使用不同的查找算法,以便更好地提升查找的效率。

计算机数据结构知识点梳理 顺序查找法、折半查找法

计算机数据结构知识点梳理		顺序查找法、折半查找法
分析:这是一个在单链表中查找结点,在结点内查找给定值的过程。
typedef struct node{ int A[m];
//每个结点含有m个整数,本例m为5 struct node *next;
}LNode, *LinkList; typedef struct{
int j; //正整数在结点内的序号 LNode *s; //结点的指针 }rcd;
}
[题2]顺序存储的某线性表共有123个元素,按分块查找的要求等分为3块。若对索引 表采用顺序查找方法来确定子块,且在确定的子块中也采用顺序查找方法,则在等 概率的情况下,分块查找成功的平均查找长度为( )。
A.21
B. 23
C. 41
D. 62
分析:分块查找成功的平均查找长度为ASL=(s2+s+n)/2s。在本题中,n=123, s=123/3=41,故平均查找长度为23。
对表中每个数据元素的查找过程,可用二叉树来描述,称这个描述折半查找过 程的二叉树为判定树,表的中间结点是二叉树的根,左子表相当于左子树, 右子表相当于右子树。折半查找的过程是从根结点到待查找结点的过程,不 论查找成功或失败,查找长度均不超过树的高度,因此,如果有序表的长度 为n,那么在查找成功时与给定值进行比较的关键字个数至多为[㏒2n] +1。
4 、分块查找法
分块查找法要求将列表组织成以下索引顺序结构: (1)首先将列表分成若干个块(子表)。一般情况下,块的长度均匀, 最后一块 可以不满。每块中元素任意排列,即块内无序,但块与块之间有序。 (2)构造一个索引表。其中每个索引项对应一个块并记录每块的起始位置,以及每 块中的最大关键字(或最小关键字)。索引表按关键字有序排列。
假定将长度为n的表分成b块,且每块含s个元素,则b=n/s。又假定表中每个元素的查 找概率相等,则每个索引项的查找概率为1/b,块中每个元素的查找概率为1/s。

顺序查找算法

顺序查找算法

顺序查找算法是一种用来查找指定的特定值在一个数组里的搜索算法。

它从一端到另一端开始寻找,直到命中要查找的值,然后返回其中的
位置。

顺序查找也被称为线性查找,它的基本思想是将要查找的目标
和数组中的每一个元素一个个比较,直到找到那个特定的值,然后返
回其在数组中的位置,如果没有找到,则返回 -1 。

顺序查找算法的时间复杂度为O(n),即需要对每一个元素都进行一次
查找,所以如果数组中有n个元素,则查找算法需要n次比较才能找
到目标元素。

因此,该查找算法时间复杂度为O(n)。

顺序查找算法的优点在于数据结构的要求非常少,只要将数组的元素
组织成线性次序,都可以构成该算法。

因为没有额外的数据结构消耗
存储空间,实现也很简单,因此也是一种非常受欢迎的搜索算法。

缺点是查询性能不是很高,时间复杂度高,即使待查找的值非常少量,但其运行时间也是相当的。

另外,它的存储数据的顺序比较严格,往
往需要先对数组元素进行排序,才能实现顺序查找。

总的来说,顺序查找算法是一种传统的基本的搜索算法,它的实现简单,存储数据的要求也很少,但是时间复杂度较高,查询效率不高。

在实际应用中,顺序查找算法适用于查找表中元素相对较少,或者查
找表本身就接近有序,而查找表中元素较多或无序时,顺序查找可能
会耗费大量的时间,并不太实用。

ACM基础算法入门教程

ACM基础算法入门教程

ACM基础算法入门教程ACM(ACM International Collegiate Programming Contest)是国际大学生程序设计竞赛的缩写,被认为是计算机领域最有权威和最具挑战性的竞赛之一、ACM竞赛要求参赛者在规定的时间内,根据给出的问题,编写出能在规定时间内运行并给出正确答案的程序。

参加ACM竞赛不仅可以锻炼算法思维,提高编程实力,还可以拓宽知识领域和增加竞争力。

在这个ACM基础算法入门教程中,我们将介绍一些常用的基础算法和数据结构,帮助初学者更好地理解和掌握ACM竞赛所需的算法知识。

一、排序算法排序算法是ACM竞赛中最常用的算法之一,能够帮助我们按照一定的规则将数据进行排序,从而解决一些需要有序数据的问题。

1.冒泡排序:通过多次比较和交换来实现,每次迭代将最大的值沉到最底部。

2.快速排序:选择一个基准元素将数组分为两部分,一部分都小于基准元素,一部分都大于基准元素,递归排序子数组。

3.归并排序:将数组不断二分,将相邻两个子数组排序后再合并成一个有序数组。

4.插入排序:从第二个元素开始,依次将元素插入已排序的子数组中。

二、查找算法查找算法可以帮助我们在一组数据中找到目标元素,从而解决一些需要查找特定数据的问题。

1.顺序查找:逐个扫描数据,直到找到目标元素或扫描结束为止。

2.二分查找:对已排序的数组进行查找,不断将数组二分直到找到目标元素的位置。

3.哈希查找:通过计算数据的哈希值找到对应的存储位置,实现快速查找。

三、字符串匹配算法字符串匹配算法可以帮助我们在一组字符串中寻找特定模式的子字符串,从而解决一些需要在字符串中查找其中一种规律的问题。

1.暴力匹配算法:对目标字符串的每个位置,逐个将模式串进行匹配,直到找到或匹配结束为止。

2.KMP算法:通过已匹配的部分信息,尽量减少字符比较的次数。

3. Boyer-Moore算法:通过预先计算模式串中每个字符最后出现位置的表格,以及坏字符规则和好后缀规则,来实现快速匹配。

C语言基本算法

C语言基本算法

C语言基本算法C语言是一门用于编写计算机程序的高级编程语言,其特点是语法简洁、表达力强,广泛应用于科学计算、系统开发等领域。

在C语言中,算法是解决问题的关键,因此掌握基本算法对于学习和使用C语言非常重要。

本文将介绍C语言中一些简单级别的基本算法。

1.顺序查找算法顺序查找算法是一种简单的算法,用于在一个无序数组中查找目标元素。

它的基本思想是逐个比较数组中的元素,如果找到目标元素则返回其索引,否则返回-12.二分查找算法二分查找算法是一种高效的算法,用于在一个有序数组中查找目标元素。

它的基本思想是将数组分成两半,判断目标元素在哪一半中,然后再在该半中进行查找,如此循环直到找到目标元素或确定不存在。

3.冒泡排序算法冒泡排序算法是一种简单的排序算法,用于将一个无序数组按照升序或降序排列。

它的基本思想是从数组的第一个元素开始,两两比较相邻元素的大小并交换位置,按照此规则不断遍历数组直到排序完成。

4.选择排序算法选择排序算法是一种简单的排序算法,用于将一个无序数组按照升序或降序排列。

它的基本思想是从数组中选择最小(或最大)的元素并放置到第一个位置,然后在剩余的元素中选择最小(或最大)的元素并放置到第二个位置,如此循环直到排序完成。

5.插入排序算法插入排序算法是一种简单的排序算法,用于将一个无序数组按照升序或降序排列。

它的基本思想是将数组分为已排序部分和未排序部分,每次从未排序部分选取一个元素插入到已排序部分的适当位置,如此循环直到排序完成。

6.计数排序算法计数排序算法是一种简单的排序算法,适用于待排序的元素是有限个数的情况。

它的基本思想是统计数组中每个元素出现的次数,然后根据统计结果重新排列数组。

7.求和算法求和算法是一种简单的计算算法,用于计算一个数组中所有元素的和。

它的基本思想是遍历数组,累加每个元素的值得到最终结果。

8.求平均值算法求平均值算法是一种简单的计算算法,用于计算一个数组中所有元素的平均值。

顺序表的查找-顺序查找

顺序表的查找-顺序查找

顺序表的查找-顺序查找查找(search):给定结点的关键字值 x ,查找值等于 x 的结点的存储地址。

按关键字 x 查:①成功,表中有 x ,返回 x 的存储地址;②不成功,x 不在表中,返回⽆效地址。

顺序查找就是以表的⼀端为起点,向另⼀个端点逐个元素查看,可以是从表头→表尾的顺序,也可以是从表尾→表头的顺序顺序查找⽅法,既适⽤于⽆序表,⼜适⽤于有序表。

顺序查找属于 “穷尽式搜索法”:通常以查找长度,度量查找算法的时间复杂性。

查找长度:即查找过程中测试的节点数⽬。

顺序查找的查找长度 = for 循环体的执⾏次数,最⼩为1,最多为n。

等概率下:平均查找长度 = (n + 1)/ 2最坏情况和平均情况:T(n)= O(n)效率最低的查找算法我们观察⼀下上图那两个 for循环体,不难发现,每次执⾏都需要判断两个条件:①测试是否循环到头;②测试是否找到元素 x。

因此我们不妨使⽤ “监督元” 技术,不仅简化了程序结构,也提⾼了查找速度。

若从表尾→表头的顺序查找,监督元则在表头处,称为 “表头监督元”,如下图:若从表头→表尾的顺序查找,监督元则在表头处,称为 “表尾监督元”,如下图:带表头监督元的顺序查找算法:int SQsearch(int a[],int x,int n){ // SQsearch 是函数名,仅此。

int i; i = n; a[0] = x; while(a[i] != x) i -- ; return i;}算法思想:① i = n;// 设置查找起点② a[0] = x;// 放置监督元,因为在进⼊循环体之前,已经预先在 a[0] 放置了⼀个元素 x,所以 x ⽆论是否真的在表中,总能找到 x ,使第三句的循环中⽌。

注意a[1] 到 a[n] 存储的才是真正的表元素。

如果 x 真存在表中,必然在某个 i ⼤于 0 时找到 x,循环终⽌。

如果循环变量 i 的值变到 0 时循环才终⽌,那就说明 x 不在表中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

01:查找特定的值查看提交统计提问总时间限制:1000ms内存限制:65536kB描述在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。

输入第一行包含一个正整数n,表示序列中元素个数。

1 <= n <= 10000。

第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。

元素的绝对值不超过10000。

第三行包含一个整数x,为需要查找的特定值。

x的绝对值不超过10000。

输出若序列中存在x,输出x第一次出现的下标;否则输出-1。

52 3 6 7 33202:输出最高分数的学生姓名查看描述输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入第一行输入一个正整数N(N <= 100),表示学生人数。

接着输入N行,每行格式如下:分数姓名分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。

数据保证最高分只有一位同学。

输出获得最高分数同学的姓名。

587 lilei99 hanmeimei97 lily96 lucy77 jimhanmeimei来源习题(13-1)03:不高兴的津津查看描述津津上初中了。

妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。

另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。

但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。

假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。

请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入包括七行数据,分别表示周一到周日的日程安排。

每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出包括一行,这一行只包含一个数字。

如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。

如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

5 36 27 25 35 40 40 6304:谁拿了最多奖学金查看提交统计提问总时间限制:1000ms内存限制:65536kB描述某校的惯例是在每学期的期末考试之后发放奖学金。

发放的奖学金共有五种,获取的条件各自不同:1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;3) 成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得;4) 西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;5) 班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。

例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。

现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。

输入第一行是一个整数N(1 <= N <= 100),表示学生的总数。

接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。

姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。

每两个相邻数据项之间用一个空格分隔。

输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。

如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。

第三行是这N个学生获得的奖学金的总数。

来源NOIP2005复赛提高组第一题05:最大值和最小值的差查看提交统计提问总时间限制:1000ms内存限制:65536kB描述输出一个整数序列中最大的数和最小的数的差。

输入第一行为M,表示整数个数,整数个数不会大于10000;第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。

输出输出M个数中最大值和最小值的差。

52 5 7 4 2506:笨小猴查看提交统计提问总时间限制:1000ms内存限制:65536kB描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。

但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。

输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。

样例 #1:error样例 #2:olympic样例输出提示单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。

单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。

来源NOIP2008复赛提高组第一题07:不与最大数相同的数字之和查看提交统计提问总时间限制:1000ms内存限制:65536kB描述输出一个整数数列中不与最大数相同的数字之和。

输入输入分为两行:第一行为N(N为接下来数的个数,N <= 100);第二行为N个整数,数与数之间以一个空格分开,每个整数的范围是-1000,000到1000,000。

输出输出为N个数中除去最大数其余数字之和。

31 2 3308:白细胞计数描述医院采样了某临床病例治疗期间的白细胞数量样本n份,用于分析某种新抗生素对该病例的治疗效果。

为了降低分析误差,要先从这n份样本中去除一个数值最大的样本和一个数值最小的样本,然后将剩余n-2个有效样本的平均值作为分析指标。

同时,为了观察该抗生素的疗效是否稳定,还要给出该平均值的误差,即所有有效样本(即不包括已扣除的两个样本)与该平均值之差的绝对值的最大值。

现在请你编写程序,根据提供的n个样本值,计算出该病例的平均白细胞数量和对应的误差。

输入输入的第一行是一个正整数n(2 < n <= 300),表明共有n个样本。

以下共有n行,每行为一个浮点数,为对应的白细胞数量,其单位为10^9/L。

数与数之间以一个空格分开。

输出输出为两个浮点数,中间以一个空格分开。

分别为平均白细胞数量和对应的误差,单位也是10^9/L。

计算结果需保留到小数点后2位。

提示为避免浮点精度误差过大,请使用double类型。

09:直方图查看提交统计提问总时间限制:1000ms内存限制:65536kB描述给定一个非负整数数组,统计里面每一个数的出现次数。

我们只统计到数组里最大的数。

假设 Fmax (Fmax < 10000)是数组里最大的数,那么我们只统计{0,1,2.....Fmax} 里每个数出现的次数。

输入第一行n是数组的大小。

1 <= n <= 10000。

紧接着一行是数组的n个元素。

输出按顺序输出每个数的出现次数,一行一个数。

如果没有出现过,则输出0。

对于例子中的数组,最大的数是3,因此我们只统计{0,1,2,3}的出现频数。

51 123 131110:找最大数序列描述输入n行,每行不超过100个无符号整数,无符号数不超过4位。

请输出最大整数以及最大整数所在的行号(行号从1开始)。

如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以一个逗号分开。

输入一行输入一个正整数n(n <= 30)。

之后的n行,每行包含不超过100个无符号整数,整数之间以一个逗号分开。

输出第一行:最大整数;第二行:最大整数所在的行编号,逗号间隔。

11:连续出现的字符查看提交统计提问总时间限制:1000ms内存限制:65536kB描述给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。

输入第一行包含一个正整数k,表示至少需要连续出现的次数。

1 <= k <= 1000。

第二行包含需要查找的字符串。

字符串长度在1到1000之间,且不包含任何空白符。

输出若存在连续出现至少k次的字符,输出该字符;否则输出No。

3abcccaaabc12:最长平台查看提交统计提问总时间限制:1000ms内存限制:65536kB描述已知一个已经从小到大排序的数组,这个数组的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。

例如,在 1,2,2,3,3,3,4,5,5,6中1,2-2,3-3-3,4,5-5,6都是平台。

试编写一个程序,接收一个数组,把这个数组最长的平台找出来。

在上面的例子中3-3-3就是最长的平台。

输入第一行有一个整数n,为数组元素的个数。

第二行有n个整数,整数之间以一个空格分开。

输出输出最长平台的长度。

101 2 2 3 3 3 4 5 5 63来源. The Science of Programming, Springer-Verlag, 198113:整数去重查看提交统计提问总时间限制:1000ms内存限制:65536kB描述给定含有n个整数的序列,要求对这个序列进行去重操作。

所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。

输入输入包含两行:第一行包含一个正整数n(1 <= n <= 20000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。

每个整数大于等于10、小于等于100。

输出输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。

510 12 93 12 7510 12 93 75来源14:铺地毯查看提交统计提问总时间限制:1000ms内存限制:65536kB描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。

相关文档
最新文档