Nenu算法复习第四章

news/2024/11/26 23:46:16/

目录

1122: 4101 统计字符数

1123: 4102 气球升起来

1124: 4103 All in All

1125: 4104 Soundex编码

1126: 4111 浮点数格式

1127: 4112 487-3279

1128: 4113 粗心的打字员

1129: 4114 单词逆序


1122: 4101 统计字符数

题目描述

判断一个由a~z这26个字符组成的字符串中哪个字符出现的次数最多。

输入

第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串,每组测试数据之间有一个空行,每行数据不超过1000个字符且非空。

输出

n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。
如果有多个字符出现的次数相同且最多,那么输出ASCII码最小的那一个字符。

样例输入 复制

2
abbcccadfadffasdf

样例输出 复制

c 3
f 4
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{int n;cin>>n;while(n--){string s;cin>>s;int a[10000]={0};for(int i = 0;i<s.size();i++)a[s[i]-'a']++;int max = 1;for(int i = 0;i<26;i++){if(a[i]>max)max=a[i];}for(int i = 0;i<26;i++){if(a[i]==max){printf("%c %d\n",i+'a',a[i]);break;}}}
}

1123: 4102 气球升起来

题目描述

又到一年竞赛时,每当看到气球升起来,是多么令人兴奋呀。告诉你一个秘密,裁判总是热衷于猜哪题是最流行的题。比赛结束后,只要统计一下所有的气球颜色就能得到答案。
今年,他们决定把这个工作留给你来完成。

输入

输入包括多组测试样例,每个测试数据都是以数字N开始 (0 < N <= 1000) ,它标识分发的气球总数。接下来的N行就是不同颜色的气球,气球颜色是一个不超过15个字符的字符串。
当N=0时表示输入结束。

输出

对于每组数据,输出最流行的问题对应的颜色。这里保证每个测试数据只会有一个答案。

样例输入 复制

5
green
red
blue
red
red
3
pink
orange
pink
0

样例输出 复制

red
pink

 

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{int n;while(scanf("%d",&n)!=EOF){if(n==0)break;vector<string> s;int count[10000]={0};int len = 0;while(n--){string tem;cin>>tem;s.push_back(tem);}sort(s.begin(),s.end());for(int i = 0;i<s.size();i++){if(s[i]!=s[i+1]){count[len]++;len++;}else{count[len]++;}}unique(s.begin(),s.end());int index = 0;int max = 0;for(int i = 0;i<len;i++){if(count[i]>max){index = i;max = count[i];}}cout<<s[index]<<endl;}
}

1124: 4103 All in All

题目描述

给定两个字符串s和t,判断s是否是t的子序列。即从t中删除一些字符,将剩余的字符连接起来,即可获得s。

输入

输入文件包括多组测试数据,每组测试数据占一行,包括两个由ASCII码组成的字符串s和t,它们的长度都不超过100000。

输出

对于每个测试数据输出一行,如果s是t的子序列,则输出“Yes”,否则输出“No”。

样例输入 复制

sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter

样例输出 复制

Yes
No
Yes
No
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{string s;string t;while(cin>>s>>t){string res;int n = 0;for(int i = 0;i<s.size();i++){for(int j = n;j<t.size();j++){if(s[i]==t[j]){res+=t[j];n = j;break;}}}if(res==s)cout<<"Yes"<<endl;elsecout<<"No"<<endl;}return 0;
}

1125: 4104 Soundex编码

题目描述

Soundex编码是根据单词的拼写和发音相似性来对单词进行分组,例如,“can”与“khawn”, “con”与“gone”在Soundex编码下是相同的。
Soundex编码方法将每个单词转换成一串数字,每个数字代表一个字母。具体如下:
1 表示B、F、P或V;
2 表示C、G、J、K、Q、S、X或Z;
3 表示D或T;
4 表示L;
5 表示M或N;
6 表示R。
字母A,E,I,0,U,H,W和Y在Soundex中不用编码的,可以直接忽略。相邻的并且具有相同编码值的字母只用一个对应的数字表示。具有相同Soundex编码值的单词被认为是相同的单词。

输入

输入文件中的每行为一个单词,全部大写,不超过20个字母。

输出

对输入文件中的每个单词,输出该单词的Soundex编码,占一行。

样例输入 复制

KHAWN
PFISTER
BOBBY

样例输出 复制

25
1236
11
#include<iostream>
using namespace std;
int main()
{string s;while(cin>>s){string res;for(int i = 0;i<s.size();i++){if(s[i]=='B'||s[i]=='F'||s[i]=='P'||s[i]=='V')res+='1';else if(s[i]=='C'||s[i]=='G'||s[i]=='J'||s[i]=='K'||s[i]=='Q'||s[i]=='S'||s[i]=='X'||s[i]=='Z')res+='2';else if(s[i]=='D'||s[i]=='T')res+='3';else if(s[i]=='L')res+='4';else if(s[i]=='M'||s[i]=='N')res+='5';else if(s[i]=='R')res+='6';elseres+='0';}for(int i = 0;i<res.size();i++){if(res[i]!=res[i+1]&&res[i]!='0')cout<<res[i];}cout<<endl;}
}

1126: 4111 浮点数格式

题目描述

输入n个浮点数,要求把这n个浮点数重新排列后再输出。

输入

第1行是一个正整数n(n <= 10000),后面n行每行一个浮点数,保证小数点会出现, 浮点数的长度不超过50位,注意这里的浮点数会超过系统标准浮点数的表示范围。

输出

n行,每行对应一个输入。要求每个浮点数的小数点在同一列上,同时要求首列上不会全部是空格。

样例输入 复制

2
-0.34345
4545.232

样例输出 复制

  -0.34345
4545.232
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{int n;vector<int> a;vector<string> s;cin>>n;while(n--){string str;cin>>str;for(int i = 0;i<str.size();i++){if(str[i]=='.'){a.push_back(i);break;}}s.push_back(str);}vector<int> copy;for(int i = 0;i<a.size();i++){int tem = a[i];copy.push_back(tem);}sort(copy.begin(),copy.end());int max = copy[copy.size()-1];for(int i = 0;i<s.size();i++){if(a[i]!=max){int gap = max-a[i];for(int j =0;j<gap;j++)cout<<' ';cout<<s[i]<<endl;}elsecout<<s[i]<<endl;}return 0;
}

1127: 4112 487-3279

题目描述

企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Ginos订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打必胜客的“三个十”号码3-10-10-10,你可以从他们那里订pizza。
电话号码的标准格式是七位十进制数,并在第三、第四位数字之间有一个连接符。电话拨号盘提供了从字母到数字的映射,映射关系如下:
A、B和C映射到2
D、E和F映射到3
G、H和I映射到4
J、K和L映射到5
M、N和O映射到6
P、R和S映射到7
T、U和V映射到8
W、X和Y映射到9
Q和Z没有映射到任何数字,连字符不需要拨号,可以任意添加和删除。 TUT-GLOP的标准格式是888-4567,310-GINO的标准格式是310-4466,3-10-10-10的标准格式是310-1010。
如果两个号码有相同的标准格式,那么他们就是等同的(相同的拨号)。
你的公司正在为本地的公司编写一个电话号码薄。作为质量控制的一部分,你想要检查是否有两个和多个公司拥有相同的电话号码。

输入

输入的格式是,第一行是一个正整数,指定电话号码薄中号码的数量(最多100000)。余下的每行是一个电话号码。每个电话号码由数字,大写字母(除了Q和Z)以及连接符组成。每个电话号码中只会刚好有7个数字或者字母。

输出

对于每个出现重复的号码产生一行输出,输出是号码的标准格式紧跟一个空格然后是它的重复次数。如果存在多个重复的号码,则按照号码的字典升序输出。如果输入数据中没有重复的号码,输出一行:
No duplicates.

样例输入 复制

12
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279

样例输出 复制

310-1010 2
487-3279 4
888-4567 3
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{long long int n;cin>>n;vector<string> str;vector<string> copy;int count[10000] = {0};//先存数while(n--){string a;cin>>a;for(int j = 0;j<a.size();j++){if(a[j]=='-')a.erase(j,1);if(a[j]=='A'||a[j]=='B'||a[j]=='C')a[j] = '2';if(a[j]=='D'||a[j]=='E'||a[j]=='F')a[j] = '3';if(a[j]=='G'||a[j]=='H'||a[j]=='I')a[j] = '4';if(a[j]=='J'||a[j]=='K'||a[j]=='L')a[j] = '5';if(a[j]=='M'||a[j]=='N'||a[j]=='O')a[j] = '6';if(a[j]=='P'||a[j]=='R'||a[j]=='S')a[j] = '7';if(a[j]=='T'||a[j]=='U'||a[j]=='V')a[j] = '8';if(a[j]=='W'||a[j]=='X'||a[j]=='Y')a[j] = '9';}str.push_back(a);}sort(str.begin(),str.end());int m = 0;for(int i = 0;i<str.size();i++){if(str[i]==str[i+1]){count[m]++;}else{count[m]++;m++;copy.push_back(str[i]);}}int sum = 0;for(int i = 0;i<m;i++){if(count[i] == 1)sum++;}if(sum!=m){for(int i = 0;i<m;i++){if(count[i]!=1){string s = copy[i];printf("%c%c%c-%c%c%c%c %d\n",s[0],s[1],s[2],s[3],s[4],s[5],s[6],count[i]);}}}else{printf("No duplicates.");}return 0;
}

1128: 4113 粗心的打字员

题目描述

Tony是一个粗心的打字员,他总是犯同样的错误。更糟糕的是,光标键坏了,因此他只能用退格键回到出错的地方,纠正以后,原来正确字符还得重新输入。
现在让我们帮助Tony找出至少需要多长时间才能纠正他的错误。

输入

输入文件的第一行是一个整数N,表示测试数据的组数。接下来有N组测试数据。
每组测试数据占3行:
第1行是一个正整数t(t <= 100),表示Tony删除或者输入一个字符所花的时间。
第2行是正确的文本内容。
第3行是Tony输入的文本内容。
注意:文本包含都是可读字符。每行文本长度不超过80。

输出

对每组测试数据,输出为Tony纠正错误所花的最少时间,占一行。

样例输入 复制

2
1
WishingBone
WashingBone
1
Oops
Oooops

样例输出 复制

20
6
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int n;cin>>n;while(n--){int t;cin>>t;while(t--){string s,t;cin>>s>>t;int min = s.size()<t.size()?s.size():t.size();int res = 0;int index = 0;for(int i = 0;i<min;i++){if(s[i]!=t[i]){index = i;break;}else{continue;}}res = t.size()-index+s.size()-index;cout<<res<<endl;}}return 0;
}

1129: 4114 单词逆序

题目描述

对于每个单词,在不改变这些单词之间的顺序下,逆序输出每个单词。
这个问题包括多组测试数据。第1行是一个整数M,紧接着是一个空行,然后是M组测试数据,每组数据之间有一个空行。要求输出M个输出块。每个输出块之间有一个空行。

输入

第1行为一个整数M,表示测试数据的组数。然后是一个空行,紧接着是M组测试数据,每组测试数据开始是一个正整数N,再是N行测试数据,包含若干个单词,单词之间用一个空格隔开,每个单词仅由大小写字母字符组成。

输出

对每组数据中的每个测试数据,输出一行。

样例输入 复制

13
I am happy today
To be or not to be
I want to win the practice contest

样例输出 复制

I ma yppah yadot
oT eb ro ton ot eb
I tnaw ot niw eht ecitcarp tsetnoc

 

#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{int m;cin>>m;while(m--){int n;cin>>n;getchar();string str;while(n--){string tem;string s0;getline(cin,str);for(int i = 0;i<str.size();i++){if(str[i]!=' ')s0+=str[i];else{reverse(s0.begin(),s0.end());tem+=s0+' ';s0.clear();}}cout<<tem;for(int i = str.size()-1;i>=0;i--){if(str[i]!=' ')cout<<str[i];elsebreak;}cout<<endl;}cout<<endl;}return 0;
}

 

 

 

 


http://www.ppmy.cn/news/183150.html

相关文章

做完这些lab,国内外大厂横着走

hi&#xff0c;大家好&#xff0c;这里是极客重生&#xff0c;坚实的计算机基础&#xff0c;对我们发展都是至关重要的&#xff0c;不管是校招还是社招&#xff0c;因此我和小伙伴一起收集了一些国内外硬核lib和开源项目来帮助大家学习和巩固基础&#xff08;动手实践&#xff…

互联网摸鱼日报(2023-06-03)

互联网摸鱼日报(2023-06-03) InfoQ 热门话题 红帽推出生成式AI服务 Ansible Lightspeed 浪潮之巅&#xff0c;如何让大语言模型走向金融应用新纪元&#xff5c;InfoQ 极客有约 知乎运营分析平台 — 舰桥平台如何通过 Apache Doris 实现查询速度 10 倍提升&#xff1f; 红帽…

有望超越手机市场?未来电瓶车市场前景大好

来源&#xff5c;新眸 文&#xff5c;志偉 在中国随处可见的&#xff0c;除了手机&#xff0c;还有电瓶车。 我们所熟知的电瓶车&#xff0c;官方的说法是电动两轮车&#xff0c;包括自行车与摩托车。中国是全球最大的电瓶车市场&#xff0c;目前约占到全球电瓶车份额的90%。自…

DEMO:F4帮助 收藏夹功能

货铺QQ群号&#xff1a;834508274微信群不能扫码进了&#xff0c;可以加我微信SAPliumeng拉进群&#xff0c;申请时请提供您哪个模块顾问&#xff0c;否则是一律不通过的。进群统一修改群名片&#xff0c;例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接&#xff0c;小程…

Redis底层学习(五)—存储类型-Set篇

文章目录 特点具体服务器操作命令底层结构应用场景 特点 适⽤场景&#xff1a;存储有去重需求的数据&#xff0c;⽐如&#xff1a;针对⼀篇⽂章⽤户进⾏点赞操作。 它的特点是内部元素⽆序且不重复。它的内部实现相当于⼀个特殊的字典&#xff0c;字典中所有的 value 的值都为…

Java网络编程-API监测

实现一个用于监测 API 接口可用性的线程类&#xff0c;其作用是通过发送 HTTP 请求到指定的 API 接口&#xff0c;并监测接口的可用性。 代码中的 APIThread 类继承自 Thread&#xff0c;意味着它可以在单独的线程中执行。 在 run 方法中&#xff0c;使用 HttpURLConnection …

企业虚拟机服务器中了lockbit3.0勒索病毒怎么办,lockbit勒索病毒解密

虚拟机服务器在现代企业中扮演着至关重要的角色&#xff0c;它是一个重要的基础设施&#xff0c;用于支持大量的业务应用和数据存储。然而&#xff0c;随着网络攻击技术的不断发展&#xff0c;企业虚拟机服务器也面临着来自黑客的威胁。其中一种最具破坏性的攻击是勒索病毒&…

vue 更新数组的方法

在 vue中&#xff0c;我们可以通过给数组添加索引来更新数组的值&#xff0c;比如我们需要在一个新的页面中添加一个新的元素&#xff0c;那么我们就可以通过给这个数组添加索引来实现。那么有朋友就会问了&#xff0c;为什么不直接在 vue中直接添加一个新的元素呢&#xff1f;…