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

本次是我第二次参加CSDN举办的编程竞赛,这一次的题相比上一次简单不少,对编程新人或者刚开始学习算法的人很友好。

前言/背景

本次CSDN编程竞赛第六期是4个编程题

大赛简介

参赛时间:9月18日8:30-11:00

时长:2小时(只要在规定参赛时间内进入比赛,都能获得2小时的答题时间,即使总时间超过了11:00)

参赛流程

首先就是在赛前进行一个报名,主要包含自己的一些基本信息,到比赛的日期时,进入比赛首页,点击进入比赛,输入姓名和电话,就能进入系统答题,当点击结束答题或者时长超过两个小时就会终止答题,并将当前成绩算为最终成绩不可修改。

参赛经历

比赛前,预先在各大刷题平台上刷了一些基础的题,熟悉一些编程算法,以免在比赛的时候手足无措;临近比赛,将电脑打开比赛页面,随时等待进入系统,并且最好选择一个较为安静的地方,有利于自己对问题的思考;正式比赛的时候,就按照题目顺序做的题。本次也是拿到了满分,很高兴。

解题思路

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

根据题目意思得到就是查出[“ak”,“m4a1”,“skr”]出现了多少次。

这题其实很简单,直接使用for循环遍历,并利用C++的string直接进行“==”比较即可,相等就对答案进行加一

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int main() {int n;std::vector<std::vector<std::string>> vec;std::cin>>n;std::string line, token;for (size_t i = 0; i < n; i++){std::vector<std::string> s;getline(std::cin >> std::ws,line);std::stringstream tokens(line);while(std::getline(tokens, token, ' ')){s.push_back((token));}vec.push_back(s);}int result = 0;for(int i = 0;i < n;i ++) {for(int j = 0;j < vec[i].size();j ++) {std::string str = vec[i][j];if(str == "ak" || str == "m4a1" || str == "skr") {result ++;}}}std::cout<<result<<std::endl;return 0;
}

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

根据题目意思可知,就是求得出现次数最多的字符串是哪一个

思路:直接暴力,使用map存储每一个字符串出现的次数,并使用一个变量存储出现的最大次数是多少,每次判断最大出现次数是否为当前字符串,并进行更新答案即可

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {int n;std::vector<std::vector<std::string>> vec;std::cin>>n;std::string line, token;for (size_t i = 0; i < n; i++){std::vector<std::string> s;getline(std::cin >> std::ws,line);std::stringstream tokens(line);while(std::getline(tokens, token, ' ')){s.push_back((token));}vec.push_back(s);}std::string result;map<string, int> num;int count = 0;for(int i = 1;i < n;i ++) {for(int j = 0;j < vec[i].size();j ++) {string str = vec[i][j];num[str] ++;if(num[str] > count) {count = num[str];result = str;}}}std::cout<<result<<std::endl;return 0;
}

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

思路:直接暴力,for循环遍历字符串,每次从当前字符开始往后取三个字符,判断是否为dot,然后进行替换,取两个字符,判断是否为at,以及已经替换的at次数是否小于1,再进行替换即可

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
int main() {std::string str;std::cin>>str;std::string result = "";int number = 0;int len = str.size();for(int i = 0;i < len;i ++) {if(i + 2 < len - 1 && i > 0) {string temp = "";for(int j = 0;j < 3;j ++) {temp += str[i + j];}if(temp == "dot") {result += ".";i = i + 2;continue;}}if(i + 1 < len - 1 && i > 0) {string temp = "";for(int j = 0;j < 2;j ++) {temp += str[i + j];}if(temp == "at" && number == 0) {result += "@";i = i + 1;number ++;continue;}}result += str[i];}std::cout<<result<<std::endl;return 0;
}

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

思路:直接暴力,每次判断当前元素vec[i]是否大于vec[i - 1],如果大于就对当前上升序列长度加一,每次更新最长递增的区间长度即可,如果遇到vec[i] <= vec[i - 1],就将当前上升序列长度置为1

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include<bits/stdc++.h>
using namespace std;
int main() {int n;std::vector<int> vec;std::cin>>n;std::string line_0, token_0;getline(std::cin >> std::ws,line_0);std::stringstream tokens_0(line_0);while(std::getline(tokens_0, token_0, ' ')){vec.push_back(std::stoi(token_0));}int result = 1;int count = 1;for(int i = 1;i < n;i ++) {if(vec[i] > vec[i - 1]) {count ++;result = max(result, count);}else count = 1;}std::cout<<result<<std::endl;return 0;
}

经验心得

本次竞赛的总体难度偏低,适合刚学习算法的新人,上一次参加CSDN的编程竞赛,只拿到了82.5,算是弥补了我一个心愿吧

资料分享

CSDN编程竞赛第六期相关推荐

  1. CSDN编程竞赛 ——— 第六期

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 文章目录 第六期竞赛题目 一.严查枪火 1.题目描述 2.代码实现 二.鬼画符门 1.题目描述 ...

  2. 【CSDN编程竞赛第六期】python详解

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 目录 目录 前言/背景 解题思路 1.严查枪火 2.鬼画符门 3.收件邮箱 4.最长递增的区间长 ...

  3. 【CSDN编程竞赛 第六期】我的第一场编程竞赛。

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 第一场编程竞赛 前言 这是我第一次接触CSND的编程竞赛,一周前看到有这么个活动,觉得很有意思, ...

  4. 【CSDN编程竞赛——第六期】

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 前言/背景 之前偶然看到的CSDN也出了竞赛就点了报名,结果今天懒觉起来之后看到提醒才想起来,属 ...

  5. CSDN编程竞赛第六期题解

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 (请不要删掉此地址) 1. 题目名称:严查枪火 X国最近开始严管枪火. 像是"ak&q ...

  6. CSDN编程竞赛第六期(C解题)

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 第一次参加CSDN的竞赛,好像是某次登录的时候看到有个竞赛链接就点进去报名了,然后今天早上收到短 ...

  7. CSDN编程竞赛-第六期(上)

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 努力是为了让自己不平庸: 前言/背景 四道题都是相关字符串的,思路很好想,但是需要熟练使用,不能 ...

  8. CSDN编程挑战赛第六期—参赛心得+题解

    文章目录 前言/背景 大赛简介 参赛流程 参赛经历 解题思路 经验心得 资料分享 CSDN第六期 参赛情况 参赛题解 题1:严查枪火 题2:鬼画符门 题3:收件邮箱 题4:最长递增的区间长度 参赛体验 ...

  9. 【CSDN编程挑战赛第六期—参赛体验+思路】

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 (请不要删掉此地址) 前言/背景 第一次参加这种类似于编程的比赛,尽管之前一直都听说,在算法世界 ...

最新文章

  1. 开篇第一题:经典中的经典!
  2. glusterfs初步实践一(类似NFS)
  3. 在Visual Studio 2010中创建多项目(解决方案)模板【三】
  4. scrapy item引用时报错
  5. 总结一下适合自己的看书方式
  6. SQL Server高级数据库管理员面试问答
  7. [海隆软件][方正电机]IPO,打新股中
  8. python源码剖析_Python源码剖析-深度探索动态语言核心技术.陈儒.PDF版www.atcpu.com...
  9. keil5安装之后的L6002U问题
  10. 动作捕捉系统FOHEART·MAGIC
  11. python中一般使用几个空格表示缩进_为什么Python pep-8强烈建议使用标签上的空格来缩进?...
  12. 鏡頭上的 F 與 f 之區別
  13. 星淘惠跨境—从火爆现象中抓住商机是卖家应该具备的思维
  14. SolidWork的使用技巧总结
  15. UBOOT 字库相关
  16. python爬取微博热搜写入数据库_python爬虫爬取微博热搜
  17. 机械检索和计算机检索,手工检索和计算机检索的优缺点
  18. ACC——carsim与simulink联合仿真
  19. arm linux ifconfig 什么都,[root@FriendlyARM /]# ifconfig eth1 up
  20. Wonderware MES—施耐德MES/MOM平台解读

热门文章

  1. 使用openssl生成cer、p12证书
  2. 字节跳动和美团为什么都在「变硬」
  3. CTSC2016APIO2016游记
  4. 网络新闻媒体发稿流程,应该注意哪些?
  5. 美国如何变成数学超级强国
  6. python中split函数
  7. Ubuntu下安装QQ和微信
  8. 如何才能有皮卡丘那样的侦探能力?
  9. 计算机组装材料购置单,组装电脑配置单包括哪些配置【图文】
  10. 高通指控苹果窃取其无线技术多年帮助英特尔,基带芯片研发难在哪?