博客
关于我
CSDN编程竞赛 ——— 第六期
阅读量:798 次
发布时间:2023-04-03

本文共 3470 字,大约阅读时间需要 11 分钟。

第六期竞赛题目

一、严查枪火

1、题目描述

X国最近开始严查枪火。像是“ a k ” “ak” ,“ m 4 a 1 ” “m4a1” ,“ s k r ” “skr” 都是明令禁止的。现在小Q查获了一批违禁物品,其中部分是枪支。小Q想知道自己需要按照私藏枪火来关押多少人。(只有以上三种枪被视为违法)

输入描述

第一行输入整数 n(1 ≤ n ≤ 1000),表示携带违禁物品的人数。以下 n 行表示违禁物品的名称。

输出描述

输出需要按照私藏枪火来关押的人。

示例

输入:3

Dsd
ak
232asd
输出:1

代码实现

解题步骤如下:

  • 依次读取输入的每个字符串,统计读取到的字符串中“ a k ” “ak” ,“ m 4 a 1 ” “m4a1” 和“ s k r ” “skr” 的个数并进行输出。
  • 代码如下:

    #include 
    #include
    using namespace std;int main() { int n = 0; cin >> n; string s; int count = 0; for (int i = 0; i < n; i++) { cin >> s; if (s == "ak" || s == "m4a1" || s == "skr") { count++; } } cout << count << endl; return 0;}

    二、鬼画符门

    1、题目描述

    鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理,但是这次鬼艺接手了,你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗?

    输入描述

    第一行输入整数 n(1 ≤ n ≤ 1000),表示鬼画符的数量。以下 n 行输入每个鬼画符的名称。

    输出描述

    输出消耗数量最多的鬼画符(字符串),无需考虑多种鬼画符消耗数量相同的情况。

    示例

    输入:5

    red
    red
    green
    green
    hen
    输出:red

    代码实现

    解题步骤如下:

  • 借助unordered_map容器统计每个鬼画符消耗的数量。
  • 遍历unordered_map容器,找出消耗数量最多的鬼画符。
  • 代码如下:

    #include 
    #include
    #include
    using namespace std;int main() { int n = 0; cin >> n; unordered_map
    um; string s; for (int i = 0; i < n; i++) { cin >> s; um[s]++; } int mCount = 0; string ret; for (auto e : um) { if (e.second > mCount) { mCount = e.second; ret = e.first; } } cout << ret << endl; return 0;}

    三、收邮件箱

    1、题目描述

    已知字符串 s t r str ,s t r str 表示邮箱的不标准格式。其中“ . ” “dot” 会被记录成“.” ,“ @ ” “@” 会被记录成“at” 。写一个程序将 s t r str 转换成可用的邮箱格式。(可用格式中字符串中除了开头结尾,所有“ d o t ”都会被转换成“.” ,“ a t ”只会被转换一次,开头结尾的不转换)

    输入描述

    输入字符串 s t r (1 ≤ strlen(s t r) ≤ 1000)。

    输出描述

    输出转换后的格式。

    示例

    输入:mxyatoxcoderdotcom

    输出:mxy@oxcoder.com

    代码实现

    解题步骤如下:

  • 依次遍历字符串中的每个字符。
  • 遍历到连续的‘d’、‘o’、‘t’时,如果‘d’不位于字符串开头,并且‘t’不位于字符串结尾,则将这三个字符转换成‘.’。
  • 遍历到连续的‘a’、‘t’时,如果‘a’不位于字符串开头,并且‘t’不位于字符串结尾,并且之前没有转换过‘at’,则将这两个字符转换成‘@’。
  • 代码如下:

    #include 
    #include
    using namespace std;int main() { string str; cin >> str; string ret; size_t pos = 0; bool flag = false; while (pos < str.size()) { if ((pos != 0) && (pos + 2 != str.size() - 1) && (str[pos] == 'd') && (pos + 1 < str.size() && str[pos + 1] == 'o') && (pos + 2 < str.size() && str[pos + 2] == 't')) { ret += '.'; pos += 3; } else if ((flag == false) && (pos != 0) && (pos + 1 != str.size() - 1) && (str[pos] == 'a') && (pos + 1 < str.size() && str[pos + 1] == 't')) { ret += '@'; pos += 2; flag = true; } else { ret += str[pos]; pos++; } } cout << ret << endl; return 0;}

    四、最长递增的区间长度

    1、题目描述

    给一个无序数组,求最长递增的区间长度,如:[5, 2, 3, 8, 1, 9],最长区间2, 3, 8长度为3。

    输入描述

    第一行输入整数 n(1 ≤ n ≤ 1000),表示数组的大小。第二行给出 n 个整数 a(-1e9 ≤ a ≤ 1e9)。

    输出描述

    输出数组中最长递增区间的长度。

    示例

    输入:6

    5 2 3 8 1 9
    输出:3

    代码实现

    解题步骤如下:

  • 遍历所给数组,遍历的同时用mCount记录下当前最长递增区间的长度,用count记录下当前递增区间的长度。
  • 当count的值超过mCount的值时则对mCount的值进行更新,当遍历到的数字小于前一个数字时则将count的值清0。
  • 代码如下:

    #include 
    #include
    using namespace std;int main() { int n = 0; cin >> n; vector
    v(n); for (int i = 0; i < n; i++) { cin >> v[i]; } int mCount = 0; int count = 0; for (int i = 1; i < n; i++) { if (v[i] - v[i - 1] > 0) { count++; if (count > mCount) { mCount = count; } } else { count = 0; } } cout << mCount + 1 << endl; return 0;}

    转载地址:http://reefk.baihongyu.com/

    你可能感兴趣的文章
    Oracle10g下载地址--多平台下的32位和64位
    查看>>
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    查看>>
    oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>
    Oracle、MySQL、SQL Server架构大对比
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>
    Oracle中DATE数据相减问题
    查看>>
    Oracle中merge into的使用
    查看>>
    oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
    查看>>
    oracle中sql的case语句运用--根据不同条件去排序!
    查看>>
    Oracle中Transate函数的使用
    查看>>
    oracle中关于日期问题的汇总!
    查看>>
    Oracle中常用的语句
    查看>>
    Oracle中序列的操作以及使用前对序列的初始化
    查看>>
    oracle中新建用户和赋予权限
    查看>>