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

简介: 我的第一场编程竞赛解题思路。

解题思路


题目一、


1、题目名称:严查枪火 X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。

现在小Q查获了一批违禁物品其中部分是枪支。 小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)


解题思路:

遍历数组中的数,如果出现“ak”,“m4a1”,“skr”就记录下来,返回出现的总次数即可。


比赛提交代码:

import java.util.ArrayList;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
ArrayList<String> vector = new ArrayList<>();
for (int i = 0; i < n; i++){
String str_1 = scan.nextLine().trim();
vector.add(str_1);
}
scan.close();
int result = solution(n, vector);
System.out.println(result);
}
public static int solution(int n, ArrayList<String> vector){
int result = 0;
for(int i = 0;i < n; ++i){
if(vector.get(i).equals("ak") || vector.get(i).equals("m4a1") || vector.get(i).equals("skr"))
result++;
}
return result;
}
}

提交结果:

微信图片_20221029141545.png

题目二、


2、题目名称:鬼画符门 鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个

程序统计每年消耗数量最多的鬼画符吗?


讲讲解题思路吧,这道题提交代码显示的是先前提交错误的那一版,正确的那一版丢失了,就不粘贴代码了:

可以用HashMap来存储,主键存放出现过得 鬼画符类型,value值存储的就是出现次数,最终只需要输出value值最大的相应主键即可。


题目三、


3、题目名称:收件邮箱 已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。

写一个程序将str转化成可用

的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)


解题思路:

将字符串转换为字符数组,遍历数组,出去开头结尾外,遍历到 a就判断后面是否有 t;遍历到d就判断后面两个是否为 o 和 t;

将条件的元素其中一个转换,其余用空格代替。

最终忽略掉空格,将字符数组的所有元素拼接起来输出即可。


提交的代码:

import java.util.ArrayList;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
String str = str_0;
scan.close();
String result = solution(str);
System.out.println(result);
}
public static String solution(String str){
String result = "";
char[] arr = str.toCharArray();
int n = arr.length;
int count = 0;
for(int i = 1;i < n-2;++i){
if(count == 0){
if(arr[i] == 'a' && arr[i+1] == 't'){
arr[i] = ' ';
arr[i+1] = '@';
count++;
}
}
if(i<n-3){
if(arr[i] == 'd' && arr[i+1] == 'o' && arr[i+2] == 't'){
arr[i] = ' ';
arr[i+1] = ' ';
arr[i+2] = '.';
}
}
}
for(int i = 0;i < n;++i){
if(arr[i] != ' ')
result += arr[i];
}
return result;
}
}

提交结果:

微信图片_20221029141554.png


题目四、


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


解题思路:

遍历给定区间长度的数组,如果有序就累加地记录下来,无序就归零,最终将记录数值的历史最高输出,便是最长递增区间。


提交代码:

import java.util.ArrayList;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
String str_1 = scan.nextLine();
String[] line_list_1 = str_1.trim().split(" ");
ArrayList<Integer> arr = new ArrayList<>();
for(int i = 0; i < line_list_1.length; i++){
arr.add(Integer.parseInt(line_list_1[i]));
}
scan.close();
int result = solution(n, arr);
System.out.println(result);
}
public static int solution(int n, ArrayList<Integer> arr){
if(n == 0) return 0;
if(n == 1) return 1;
int result = 0;
int count = 0;
for(int i = 1;i < n;++i){
if(arr.get(i) >= arr.get(i-1)){
count++;
}else{
count = 0;
}
if(count + 1 >= result){
result = count + 1;
}
}
return result;
}
}

结果:

微信图片_20221029141602.png


总结


总的来说,这次编程竞赛的题目并不难,即使对于我这种小白选手,也是有能力得到满分的,就是用时比较久,且最终发挥的成绩没有达到预期。

有得有失,这次编程竞赛的经历让我有所进步,希望自己能再接再厉,变得更加强大吧....


贵在坚持:

微信图片_20221029111446.jpg

目录
相关文章
|
7月前
|
供应链 搜索推荐 前端开发
计算机专业毕业论文设计与实现(论文+源码)_kaic
计算机专业毕业论文设计与实现(论文+源码)_kaic
|
4月前
|
安全
2024年江西省研究生数学建模竞赛C题: 聚变反应堆设计 问题分析、实现代码及参考论文
本文是关于2024年江西省研究生数学建模竞赛C题的解题分析,题目要求设计聚变反应堆,建立模型分析慢化区/增殖区中温度和中子通量的变化,确定反应堆尺寸以最小化单位电力输出的总成本,并计算相关物理量和分析等离子体的点火要求及稳态运行持续时间。
150 2
|
测试技术 UED
【CSDN第五期竞赛】说说自己的感受吧
【CSDN第五期竞赛】说说自己的感受吧
93 0
|
算法 C语言
【CSDN编程竞赛·第四期】个人参赛经历和个人建议
大家好,我前不久参加了官方举办的CSDN编程比赛,官方举办了四期,第一期的时候没看到,错过了,后面的每一期我都参加了,总的感觉来说,还可以。下面我具体说说第四期相关经验吧。
|
C语言 Python
我带我的小侄子参加编程竞赛
我带我的小侄子参加编程竞赛
68 0
我带我的小侄子参加编程竞赛
|
机器学习/深度学习 算法 数据挖掘
2023美国大学生数学建模竞赛ABCDEF题思路汇总 美赛建模思路
2023美国大学生数学建模竞赛ABCDEF题思路汇总 美赛建模思路
|
算法 IDE Java
CSDN编程挑战赛第六期—参赛心得+题解
CSDN编程挑战赛第六期—参赛心得+题解
CSDN编程挑战赛第六期—参赛心得+题解
CSDN竞赛第六期第二题(C++)
鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理,但是这次鬼艺接手了,你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗? 注解(这题是一道找出出现次数最多的字符串的一道题目) 输入描述: 第一行输入整数n.(1<=n<=1000)以下n行输入n个字符串,代表消耗的鬼画符。 输出描述: 输出消耗数量最多的鬼画符(字符串),无需考虑多种鬼画符消耗数量相同的情况。 示例1 输入 5 red red green green hen 输出 red
161 0
|
机器学习/深度学习 算法 C++
独家干货 | 林轩田机器学习课程精炼笔记!
独家干货 | 林轩田机器学习课程精炼笔记!
574 1
独家干货 | 林轩田机器学习课程精炼笔记!
|
机器学习/深度学习 算法 数据安全/隐私保护
精心整理 | 林轩田机器学习资源汇总
精心整理 | 林轩田机器学习资源汇总
192 0
精心整理 | 林轩田机器学习资源汇总
下一篇
DataWorks