当前位置: 首页 > news >正文

CSDN编程竞赛 ——— 第六期

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16

文章目录

  • 第六期竞赛题目
    • 一、严查枪火
      • 1、题目描述
      • 2、代码实现
    • 二、鬼画符门
      • 1、题目描述
      • 2、代码实现
    • 三、收邮件箱
      • 1、题目描述
      • 2、代码实现
    • 四、最长递增的区间长度
      • 1、题目描述
      • 2、代码实现

第六期竞赛题目

一、严查枪火

1、题目描述

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

  • 输入描述: 第一行输入整数 n ( 1 ≤ n ≤ 1000 ) n(1≤n≤1000) n(1n1000)表示携带违禁物品的人数。以下 n n n 行表示违禁物品的名称。
  • 输出描述: 输出需要按照私藏枪火来关押的人。

示例:

输入:3
   Dsd
   ak
   232asd
输出:1

2、代码实现

解题步骤如下:

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

代码如下:

//严查枪火
#include <iostream>
#include <string>
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(1≤n≤1000) n(1n1000),以下 n n n 行输入 n n n 个字符串,代表消耗的鬼画符。
  • 输出描述: 输出消耗数量最多的鬼画符(字符串),无需考虑多种鬼画符消耗数量相同的情况。

示例:

输入:5
   red
   red
   green
   green
   hen
输出:red

2、代码实现

解题步骤如下:

  1. 借助unordered_map容器统计每个鬼画符消耗的数量。
  2. 遍历unordered_map容器,找出消耗数量最多的鬼画符。

代码如下:

//鬼画符门
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
	int n = 0;
	cin >> n;
	//统计每个鬼画符消耗的数量
	unordered_map<string, int> 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 str s t r str str 表示邮箱的不标准格式。其中 “ . ” “.” “.”会被记录成 “ d o t ” “dot” dot “ @ ” “@” “@”会被记录成 “ a t ” “at” at
  写一个程序将 s t r str str 转换成可用的邮箱格式。(可用格式中字符串中除了开头结尾,所有 “ d o t ” “dot” dot都会被转换, “ a t ” “at” at只会被转换一次,开头结尾的不转换)

  • 输入描述: 输入字符串 s t r ( 1 ≤ s t r l e n ( s t r ) ≤ 1000 ) str(1≤strlen(str)≤1000) str(1strlen(str)1000)
  • 输出描述: 输出转换后的格式。

示例:

输入:mxyatoxcoderdotcom
输出:mxy@oxcoder.com

2、代码实现

解题步骤如下:

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

代码如下:

//收邮件箱
#include <iostream>
#include <string>
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(1≤n≤1000) n(1n1000)表示数组的大小,第二行给出 n n n 个整数 a ( − 1 e 9 ≤ a ≤ 1 e 9 ) a(-1e^9≤a≤1e^9) a(1e9a1e9)
  • 输出描述: 输出数组中最长递增区间的长度。

示例:

输入:6
   5 2 3 8 1 9
输出:3

2、代码实现

解题步骤如下:

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

代码如下:

//最长递增的区间长度
#include <iostream>
#include <vector>
using namespace std;
int main()
{
	int n = 0;
	cin >> n;
	//读取数组
	vector<int> 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;
}

相关文章:

  • java基于ssm+vue的企业项目审核管理系统
  • Top Autosys Interview Questions and Answers
  • 妇产科护理学复习重点归纳、试题及答案
  • ESLint+Prettier+Vetur 统一Vue项目代码风格
  • 《Linux驱动:Nor flash驱动看这一篇就够了》
  • [计算机通信网络]跳(hop) 的概念,tracert指令来查看访问站点经过了多少个路由器
  • SpringBoot RestTemplate详解
  • [代码审计] beecms 4.0 漏洞总结
  • 计算机笔试面试题记录
  • 基于量子计算的无收益标的资产欧式看涨期权定价和delta风险分析
  • 【PCB软件技巧】OrCAD与PADS相互搭配使用的相关要点
  • 精通MySQL之Explain执行计划
  • Docker学习
  • Kubernetes—k8s中Service实例出现污点
  • Chapter4.2:线性系统的根轨迹法
  • 网络传输文件的问题
  • 3.7、@ResponseBody 和 @RestController
  • HTTP--网络协议分层,http历史(二)
  • input实现文字超出省略号功能
  • iOS编译提示和导航提示
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Joomla 2.x, 3.x useful code cheatsheet
  • js操作时间(持续更新)
  • Next.js之基础概念(二)
  • nodejs:开发并发布一个nodejs包
  • Octave 入门
  • Python - 闭包Closure
  • SOFAMosn配置模型
  • SpingCloudBus整合RabbitMQ
  • Theano - 导数
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 初识MongoDB分片
  • 大快搜索数据爬虫技术实例安装教学篇
  • 多线程事务回滚
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 每天10道Java面试题,跟我走,offer有!
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 用jquery写贪吃蛇
  • 最简单的无缝轮播
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • PostgreSQL之连接数修改
  • Prometheus VS InfluxDB
  • 阿里云ACE认证之理解CDN技术
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​低代码平台的核心价值与优势
  • ​水经微图Web1.5.0版即将上线
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (floyd+补集) poj 3275
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • ****Linux下Mysql的安装和配置
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**