计算机研究生复试-排序问题

  • 时间:2020-08-04 10:42 编辑: 来源: 阅读:69
  • 扫一扫,手机访问
摘要:排序问题KY74 字符串排序本题总结:KY76 字符串排序本题总结:KY68 子串计算本题总结:KY115 后缀字串排序本题总结:KY234 最长&最短文本本题总结:KY224 大整数排序本题总结:KY219 最小年龄的3个职工本题总结:KY190 查找第K小数本题总结:KY82 字符串排序本题总结:KY29 谁是你的潜在朋友本题总结:KY154 排名本题总结:KY 140 开门人和关门人本题总结:KY74 字符串排序题目描述输

排序问题
KY74 字符串排序
本题总结:
KY76 字符串排序
本题总结:
KY68 子串计算
本题总结:
KY115 后缀字串排序
本题总结:
KY234 最长&最短文本
本题总结:
KY224 大整数排序
本题总结:
KY219 最小年龄的3个职工
本题总结:
KY190 查找第K小数
本题总结:
KY82 字符串排序
本题总结:
KY29 谁是你的潜在朋友
本题总结:
KY154 排名
本题总结:
KY 140 开门人和关门人
本题总结:
KY74 字符串排序
题目描述

输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果

输入描述:
一个字符串,其长度n<=20

输出描述:
输入样例可能有多组,对于每组测试样例,
按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果

示例1

输入

dcba

输出

abcd

本题总结:
1.按照ASCII码从小到大排序其实直接sort就可以完成。
2.看见字符串就要立马想到用string,并且知道string中用begin()和end()函数来表示第一个和最后一个字符。

KY76 字符串排序
标题描述

编写一个程序,将输入字符串中的字符按如下规矩排序(一个测试用例可能包括多组数据,请注意处理)。

规矩 1 :英文字母从 A 到 Z 排列,不区别巨细写。 如,输入: Type 输出: epTy

规矩 2 :同一个英文字母的巨细写一起存在时,按照输入顺序排列。 如,输入: BabA 输出: aABb

规矩 3 :非英文字母的其它字符坚持原来的方位。 如,输入: By?e 输出: Be?y

样例:

输入: A Famous Saying: Much Ado About Nothing(2012/8).

输出: A aaAAbc dFgghh : iimM nNn oooos Sttuuuy (2012/8).

本题总结:
1.遇见多种规矩操作字符的标题时,要想到先利用函数进行判别,依据return返回值的不同即可区别字符串中的不同字符。

2.将大写字母转化为小写字母的方法:a=a-‘A’+‘a’

3.遇见同一个英文字母的巨细写一起存在时,按照输入顺序排列这种情况时要想到能够把它们都转化为小写字母,接着再利用stable_sort排序就能够完成。

4.字符串的输入先界说一个char str[N];然后用while(gets(str))进行输入。

5.字符串的长度用int len=strlen(str);

6.如何确保巨细字母进行从小到大排序,非巨细字母坚持原来方位?
把字符串str[N]里的字母全都复制到另一个字符串letter[N]里,然后对另一个只含字母字符串letter[N]进行排序。输出时对原字符串逐一字符输出,若该字符不是字母则直接输出,若是字母则从另一个字符串里面拿一个字符输出,这样就能够了

7.为了避免数组溢出,把N设置为1000.

KY68 子串计算
标题描绘

给出一个01字符串(长度不超越100),求其每一个子串出现的次数。

输入描绘:
输入包含多行,每行一个字符串。

输出描绘:
对每个字符串,输出它一切出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。

输入

10101
输出

0 2
01 2
1 3
10 2
101 2

本题总结:
1.看见按照字典序排序就要想到用map,由于map内部主动按key排序
2. 字符串长度 当定义的是string str时,用str.length,当定义的是char str[100]时,用int len=strlen(str);

3.怎么取到一个字符产中一切字串?

for(int i = 0; i <= str.length(); i++){
for(int j = 0; j < i; j++){
string sub_str = str.substr(j, i - j)
4.STL的输出

KY115 后缀字串排序
题目描绘

关于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n

然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain

输入描绘:

每个案例为一行字符串。

输出描绘:

将子串排序输出

示例1

输入

grain

输出

ain
grain
in
n
rain

本题总结:
1.这道题思路和上面的那道题一模一样

2.str.size()和str.length()无区别

3.for(int i = 0 ;i < str.length(); i++)假如写成for(int i = 0 ;i < =str.length(); i++) 那么输出的成果就会多出一行空字符产,导致代码通不过。

KY234 最长&最短文本

本题总结:

1.疑惑点:while(getline(cin,str))怎么退出循环?


2.遇见包含空格字符串的输入用getline,因为要输入多行,所以while(getline(cin,str))


3.顺序输出用 stable_sort


4.vector数组中最后的一个元素用vi[vi.size()-1]表示


5.vector建立用vector vi; 添加元素用vi.push_back(str);

题目描述


输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。


输入描述:

输入包括多行字符串,字符串的长度len(1<=len<=1000)。


输出描述:

按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。


示例1


输入


hello

she

sorry

he


输出


he

hello

sorry

KY224 大整数排序
本题总结:
1.进行大数比较时先比较长度,长度短的数肯定小,如何长度相同再比较大小。

2.当标题要求输入一个N,之后输入N个字符串时用getchar能够吃掉前面输入字符今后敲的回车,这样才干读取后边的字符。

3.接连输入多行字符串的读入方法
for(int i=0;i<n;getline(cin,a[i++])); 注意这里有;!!!
 
标题描绘

对N个长度最长可达到1000的数进行排序。

输入描绘:

输入榜首行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且确保不包含前缀零。

输出描绘:
可能有多组测试数据,关于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。

示例1

输入

3
11111111111111111111111111111
2222222222222222222222222222222222
33333333

输出

33333333
11111111111111111111111111111
2222222222222222222222222222222222
KY219 最小年纪的3个员工
本题总结:
1.结构体名字要变为char数组方式,id和年纪不需要,直接用int就行。

2.比较年纪和id这种数字类型的,可以用if(a.age!=b.age)return a.age<b.age;这种方式
 
3.比较名字这种字符类型时,用return strcmp(a.name,b.name)<0;

4.strcmp函数,基本方式为strcmp(str1,str2),若str1=str2,则回来零;若str1
str2,则回来正数
所以当用来判断名字时,用 return strcmp(a.name,b.name)<0;

5.在输入数据时,&st[i].number,st[i].name,&st[i].age 注意id和年纪都要加&,名字不用。

6.声明结构体只需要在定义好的结构体后面取个名字加上一个数字就行。例如这里是struct staff{ }st[30];

题目描绘

员工有员工号,名字,年纪.输入n个员工的信息,找出3个年纪最小的员工打印出来。

输入描绘:

输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。
接下来的N行有N个员工的信息:
包括员工号(整数), 名字(字符串,长度不超过10), 年纪(1<=age<=100)。

输出描绘:
可能有多组测试数据,关于每组数据,

输出成果行数为N和3的较小值,分别为年纪最小的员工的信息。
关键字次序:年纪>工号>名字,从小到大。

示例1

输入

5
501 Jack 6
102 Nathon 100
599 Lily 79
923 Lucy 15
814 Mickle 65

输出

501 Jack 6
923 Lucy 15
814 Mickle 65

<p font-size:16px;color:#4d4d4d;background-color:#ffffff;"="" style="word-wrap: break-word; font-family: "sans serif", tahoma, verdana, helvetica; font-size: 12px; white-space: normal;">KY190 查找第K小数
标题描绘

查找一个数组的第K小的数,注意相同巨细算相同大。
如 2 1 3 4 5 2 第三小数为3。

输入描绘:

输入有多组数据。

每组输入n,然后输入n个整数(1<=n<=1000),再输入k。

输出描绘:

输出第k小的整数。

示例1

输入

6
2 1 3 5 2 2
3

输出

3

本题总结:
1.记住这儿数组去重的思维先创建一个数组a(尽可能大一点),使之全为0.然后依据输入的不同数把数组a对应下标的数变为1.之后再把a数组遍历,把对应方位是1的放入。这样就完成了去重。(由于不论你输入几回,在a数组数字对应的那个方位的值变为了1,所以之后用if(a[i]==1) 取的时分只取一个)

2.vector创建的办法 vector后面加类型加姓名
3. vector和上面这种去重办法一起运用,用nums.push_back(i)就可以完成从小到大排序。

KY82 字符串排序
题目描绘

先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车完毕,每个字符串少于一百个字符。 如果在输入过程中输入的一个字符串为“stop”,也完毕输入。 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序成果输出字符串。

输入描绘:
字符串的个数,以及该组字符串。每个字符串以‘\n’完毕。如果输入字符串为“stop”,也完毕输入.

输出描绘:
可能有多组测试数据,对于每组数据,
将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。

依据输入的字符串个数来动态分配存储空间(采用new()函数)。每个字符串会少于100个字符。
测试数据有多组,留意使用while()循环输入。

输入

5
sky is grey
cold
very cold
stop
3
it is good enough to be proud of
good
it is quite good

输出

cold
very cold
sky is grey
good
it is quite good
it is good enough to be proud of

本题总结:
1.用getchar()吃回车键

2.vector循环输入的时候用 getline(cin,str); v.push_back(str);
而不是cin>>v[i].str.

3.vector的sort是用sort(v.begin(),v.end(),cmp);

  • 全部评论(0)
最新发布的资讯信息
【A8站-免费源码分享|直播源码】直播系统源码开发:关于安卓开发工具和obs直播推流(2020-10-30 09:41)
【计算机/互联网|】【独家修复】用户定制版短视频点赞系统,支持抖音+快手+刷宝+微视等所有主流短视频评论系统源码(2020-10-26 16:34)
【技术宅-为技术而疯|网站架设教程】【独家首发】最新更新已对接短信2020全新抖音快手点赞任务系统霸屏天下小红书头条威客兼职完整搭建架设视频教程(2020-10-25 13:56)
【技术宅-为技术而疯|网站架设教程】最新可用个人发卡网系统源码完整搭建架设视频教程(2020-10-25 10:53)
【技术宅-为技术而疯|网站架设教程】独家更新全新V10抢单系统唯品会京东淘宝自动抢单区块系统源码全开源抢单收单接单返利+搭建架设完整视频教程(2020-10-25 10:52)
【计算机/互联网|】柔丫纸尿裤云仓系统源码部署(2020-10-15 18:13)
【计算机/互联网|】侏罗纪软件模式定制开发(2020-10-14 15:33)
【计算机/互联网|】S2b2C供应商系统 营销闭环(2020-10-10 17:46)
【计算机/互联网|程序设计开发】盛都汇系统奖励机制(2020-10-10 17:20)
【A8站-免费源码分享|网站源码】积分商城系统APP开发(2020-09-23 14:56)
联系我们
Q Q:3101359898 点击直接对话
电话:18580901894
邮箱:admin#a8zhan.com
时间:09:00 - 24:00
手机二维码 访问手机版
返回顶部