Nenu算法复习第四章

这篇具有很好参考价值的文章主要介绍了Nenu算法复习第四章。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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
abbccc

adfadffasdf

样例输出 复制

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

 文章来源地址https://www.toymoban.com/news/detail-469453.html

#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;
        else
        cout<<"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';
            else
            res+='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;
        }
        else
        cout<<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行测试数据,包含若干个单词,单词之间用一个空格隔开,每个单词仅由大小写字母字符组成。

输出

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

样例输入 复制

1

3
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];
                else
                break;
            }
            cout<<endl;
        }
        cout<<endl;
    }
    return 0;
}

 

 

 

 

到了这里,关于Nenu算法复习第四章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【操作系统复习之路】存储器管理(第四章 &超详细讲解)

    目录 一、存储器的层次结构 二、程序的装入和链接 2.1 逻辑地址和物理地址 2.2 绝对装入方式 2.3 可重定位装入方式 2.4 动态运行时装入方式 2.5 静态链接  2.6 装入时动态链接 2.7 运行时动态链接 三、连续分配存储器管理方式 3.1 单一连续分配 3.2 固定分区分配 3.3 动态分区

    2024年04月27日
    浏览(27)
  • 概率论与数理统计:第四章:随机变量的数字特征

    一维随机变量的数字特征:数学期望、方差 二维随机变量的数字特征:协方差、相关系数 (1)数学期望的概念 数学期望,又称均值 1.离散型 ①一维离散型随机变量X的数学期望: E X EX EX 若离散型随机变量X的级数 ∑ k = 1 ∞ x k p k sumlimits_{k=1}^∞x_kp_k k = 1 ∑ ∞ ​ x k ​ p k ​

    2024年02月12日
    浏览(30)
  • 操作系统考试复习——第四章 存储器管理 4.1 4.2

    存储器的层次结构: 存储器的多层结构: 存储器至少分为三级:CPU寄存器,主存和辅存。 但是 一般分为6层 为寄存器,高速缓存,主存储器,磁盘缓存,固定磁盘,可移动存储介质。 这几个部分是 速度依次减小 但是 存储容量是依次增大 的。  只有固定磁盘和可移动存储

    2024年02月03日
    浏览(32)
  • 计算机网络考试复习——第四章 4.1 4.2.1 4.2.2

    网络层传输的单位是IP数据报 4.1 网络层的几个重要概念 网络层提供的两种服务:网络层应该向运输层提供怎样的服务?面向连接还是无连接? 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 面向连接的可靠交付。 计算机网络模仿电信网络,使用面向连接

    2024年02月11日
    浏览(27)
  • 斯坦福 Stats60:21 世纪的统计学:前言到第四章

    原文: statsthinking21.github.io/statsthinking21-core-site/index.html 译者:飞龙 协议:CC BY-NC-SA 4.0 这本书的目标是讲述统计学的故事,以及它如何被全球的研究人员所使用。这是一个与大多数统计学入门书籍中讲述的故事不同的故事,后者侧重于教授如何使用一套工具来实现非常具体的

    2024年01月18日
    浏览(38)
  • 传感器原理与检测技术复习笔记第四章-电感式传感器

    基本原理 由 线圈、铁芯、衔铁 三部分组成,在铁芯和衔铁之间有气隙,传感器的运动部分和衔铁相连。 衔铁移动时,气隙厚度发生变化,引起磁路的磁阻变化,从而导致线圈电感发生变化。 通过测量电感量的变化确定位移的大小和方向。 通常气隙磁阻远大于铁芯和衔铁的

    2024年02月13日
    浏览(31)
  • 【 Linux命令行与Shell脚本编程】第四章 进程管理 ,磁盘统计信息,挂载新磁盘,数据排序,数据归档

    第四章 更多命令 进程管理 磁盘统计信息 挂载新磁盘 数据排序 数据归档 4.1,监测程序 4.1.1,ps 探查进程 4.1.2,top 实时监测进程 4.1.3,kill pkill 结束进程 1,kill 命令 2,pkill 命令 4.2,检测磁盘空间 4.2.1,mount umount挂载存储设备 1. mount 命令 其他选项 2,umount 命令 4.2.2, df 命令 4.2.3, du 命令

    2023年04月24日
    浏览(36)
  • 算法详解+代码(无人驾驶车辆模型预测控制第四章)

    首先对汽车运动学模型进行建模: ​ 设后轴速度为,前轴行速度为考虑后轴轴心的速度约束,得到和后轴速度的关系如下:                                             考虑到前后轴速度约束的运动学方程为:       设后轴行驶中心为,前轴行驶中心为,根据前后轴之

    2024年02月03日
    浏览(30)
  • C++算法之旅、06 基础篇 | 第四章 动态规划 详解

    状态表示 集合 满足一定条件的所有方案 属性 集合(所有方案)的某种属性(Max、Min、Count等) 状态计算(集合划分) 如何将当前集合划分成多个子集合 状态计算相当于集合的划分 :把当前集合划分成若干个子集,使得每个子集的状态可以先算出来,从而推导当前集合状态

    2024年02月09日
    浏览(27)
  • 【计组考点】:第四章 存储系统(下)主存-cache块替换算法

    根据学校课件总结的计组考点,用过的都说好! 目录 14.高速缓冲存储器cache 15.主存-cache地址映射 15.1例一 15.2例二 16.cache块替换算 最后🍨     加油!!!

    2024年01月19日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包