第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组A-E题(go、java实现)

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

  • A题:日期统计
  • B题:01串的熵
  • C题:冶炼金属
  • D题:飞机降落
  • E题:接龙数列

A题:日期统计

在这里插入图片描述
直接遍历2023年每一天,看数组中是否有符合的
java的coding如下:

public class Main {public static void main(String[] args) {int[] array = {5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7,5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5, 8, 6, 1, 8, 3, 0, 3, 7, 9,2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, 9, 4, 4, 6, 8, 6, 3, 3,8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6,1, 4, 0, 1, 0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3};int[] daysInMonth = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int ans = 0;for (int month = 1; month <= 12; ++month) {for (int day = 1; day <= daysInMonth[month]; ++day) {int[] dateSeq = {2, 0, 2, 3, month / 10, month % 10, day / 10, day % 10};int k = 0;for (int i = 0; i < 100; ++i) {if (array[i] == dateSeq[k]) {++k;if (k == 8) {ans++;break;}}}}}System.out.println(ans);}
}

go的coding如下:

package mainimport "fmt"func main() {array := []int{5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7,5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5, 8, 6, 1, 8, 3, 0, 3, 7, 9,2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, 9, 4, 4, 6, 8, 6, 3, 3,8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6,1, 4, 0, 1, 0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3,}daysInMonth := []int{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}ans := 0for month := 1; month <= 12; month++ {for day := 1; day <= daysInMonth[month]; day++ {dateSeq := [8]int{2, 0, 2, 3, month / 10, month % 10, day / 10, day % 10}k := 0for i := 0; i < 100; i++ {if array[i] == dateSeq[k] {k++if k == 8 {ans++break}}}}}fmt.Println(ans)
}

B题:01串的熵

在这里插入图片描述
枚举即可
注意设置变量为浮点型,避免多余的类型转换
java的coding如下:

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...double n = 23333333;for (int i = 0; i <= n / 2; i++) {double sum = 0;sum -= i * (i / n) * Math.log(i / n) / Math.log(2) + (n - i) * ((n - i) / n) * Math.log((n - i) / n) / Math.log(2);if (sum > 11625907.5 && sum < 11625907.6) {System.out.println(i);break;} }scan.close(); }
}

go的coding如下:

package mainimport ("fmt""math"
)func main() {n := 23333333.0var sum float64for o := 0; o <= int(n/2); o++ {sum = 0sum -= float64(o) * (float64(o) / n) * math.Log(float64(o)/n)/math.Log(2) + (n - float64(o)) * ((n - float64(o)) / n) * math.Log((n - float64(o))/n)/math.Log(2)if sum > 11625907.5 && sum < 11625907.6 {fmt.Println(o)break}}
}

C题:冶炼金属

在这里插入图片描述
推公式题目
在这里插入图片描述
java的coding如下:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[] a = new int[n];int[] b = new int[n];for (int i = 0; i < n; i++) {int A = scan.nextInt();int B = scan.nextInt();a[i] = A / B;b[i] = A / (B + 1);}int maxB = b[0];int minA = a[0];for (int i = 1; i < n; i++) {maxB = Math.max(maxB, b[i]);minA = Math.min(minA, a[i]);}System.out.println((maxB + 1) + " " + minA);scan.close();}
}

go的coding如下:

package mainimport ("fmt"
)func main() {var n intfmt.Scan(&n)a := make([]int, n)b := make([]int, n)for i := 0; i < n; i++ {var A, B intfmt.Scan(&A, &B)a[i] = A / Bb[i] = A / (B + 1)}maxB := b[0]minA := a[0]for i := 1; i < n; i++ {if b[i] > maxB {maxB = b[i]}if a[i] < minA {minA = a[i]}}fmt.Println(maxB+1, minA)
}

D题:飞机降落

在这里插入图片描述
DFS暴力搜索即可 记得回溯
在这里插入图片描述
java的coding如下:

import java.util.Scanner;public class Main {static class Plane {int t, d, l;}static boolean[] vis = new boolean[15];static boolean flag;static Plane[] p = new Plane[15];public static void dfs(int m, int cnt, int last) {if (cnt == m) {flag = true;return;}for (int i = 0; i < m; i++) {if (!vis[i] && p[i].t + p[i].d >= last) {vis[i] = true;dfs(m, cnt + 1, Math.max(last, p[i].t) + p[i].l);vis[i] = false;}}}public static void main(String[] args) {Scanner scan = new Scanner(System.in);int T = scan.nextInt();for (int t = 0; t < T; t++) {int N = scan.nextInt();for (int i = 0; i < N; i++) {p[i] = new Plane();p[i].t = scan.nextInt();p[i].d = scan.nextInt();p[i].l = scan.nextInt();}flag = false;dfs(N, 0, 0);if (flag) {System.out.println("YES");} else {System.out.println("NO");}}scan.close();}
}

go的coding如下:

package mainimport "fmt"type plane struct {t, d, l int
}var vis [15]bool
var flag bool
var p [15]planefunc dfs(m, cnt, last int) {if cnt == m {flag = truereturn}for i := 0; i < m; i++ {if !vis[i] && p[i].t+p[i].d >= last {vis[i] = truedfs(m, cnt+1, max(last, p[i].t)+p[i].l)vis[i] = false}}
}func max(a, b int) int {if a > b {return a}return b
}func main() {var T, N intfmt.Scan(&T)for t := 0; t < T; t++ {fmt.Scan(&N)for i := 0; i < N; i++ {fmt.Scan(&p[i].t, &p[i].d, &p[i].l)}flag = falsedfs(N, 0, 0)if flag {fmt.Println("YES")} else {fmt.Println("NO")}}
}

E题:接龙数列

在这里插入图片描述
咳咳,这边暴力只通过40%

import java.util.*;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();List<String> list = new ArrayList<>();for (int i = 0; i < n; i++) {list.add(scan.next());}scan.close();int res = 0;Iterator<String> it = list.iterator();String prev = it.next();while (it.hasNext()) {String current = it.next();if (prev.charAt(prev.length() - 1) != current.charAt(0)) {it.remove();res++;n--;} else {prev = current;}}System.out.println(res);}
}

所以需要使用动态规划
根据数列总长度-最长接龙数列长度等于最少删除次数求最优解, 定义状态为当前最长接龙数列长度,则dp[i]就是以i为数字最后一位的最长接龙数列长度,设x为当前数字的第一位(如果为接龙数列,也就是前一位数的最后一位),y为当前数字的最后一位,则转移方程可以写为dp[y]=max(dp[x]+1,dp[y])

java的coding如下:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[] dp = new int[10];int m = 0;for (int i = 0; i < n; i++) {String s = scan.next();int x = s.charAt(0) - '0';int y = s.charAt(s.length() - 1) - '0';dp[y] = Math.max(dp[x] + 1, dp[y]); //选与不选 不选即是删除m = Math.max(m, dp[y]);}System.out.println(n - m);scan.close();}
}

go的coding如下:

package mainimport ("fmt"
)func main() {var n, x, y, m intfmt.Scan(&n)dp := make([]int, 10)for i := 0; i < n; i++ {var s stringfmt.Scan(&s)x = int(s[0] - '0')y = int(s[len(s)-1] - '0')dp[y] = max(dp[x]+1, dp[y])m = max(m, dp[y])}fmt.Println(n - m)
}func max(a, b int) int {if a > b { return a }; return b}

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

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

相关文章

中国1000米分辨率年最大增强型植被指数(EVI)数据集

增强型植被指数&#xff08;EVI&#xff09;是在归一化植被指数&#xff08;NDVI&#xff09;改善出来的&#xff0c;根据大气校正所包含的影像因子大气分子、气溶胶、薄云、水汽和臭氧等因素进行全面的大气校正&#xff0c;EVI大气校正分三步&#xff0c;第一步是去云处理。第…

3.SpringMVC程序开发

文章目录 1.什么是 Spring MVC&#xff1f;1.1 MVC 定义1.2 MVC 和 Spring MVC 的关系 2.为什么要学 Spring MVC&#xff1f;3.怎么学 Spring MVC&#xff1f;3.1 Spring MVC 创建和连接3.1.1 创建 Spring MVC 项⽬3.1.2 RequestMapping 注解介绍3.1.3 RequestMapping 是 post …

HDMI+钡铼ARM工控机:打造工业4.0时代的智能车间

在深入探讨这款钡铼技术ARM工业计算机的功能特点时&#xff0c;我们发现其在实现车间实时管理、数据分析和决策支持方面的优势尤其突出&#xff1a; 通过HDMI接口连接至大型显示器或者智能电视&#xff0c;这款ARM工业计算机能够建立起一套完整的车间视觉管理系统&#xff0c;使…

快手视频没有人播剧,一天做了4800 ,轻松解决版权纠纷,手机上也可以实现24钟头躺着赚钱

项目简介&#xff1a; 对于热爱追剧的人来说&#xff0c;这个项目可以作为一个很好的副业选择。在观看电视剧的同时&#xff0c;还能有机会赚钱。通过使用快手直播伴侣进行24小时不间断的直播&#xff0c;播放热门电视剧或者搞笑小品&#xff0c;通常能吸引大量观众&#xff0…

四川古力未来科技抖音小店:安全守护,购物无忧

在当下数字化浪潮席卷全球的背景下&#xff0c;电商行业迎来了前所未有的发展机遇。四川古力未来科技抖音小店作为新兴的电商力量&#xff0c;以其独特的魅力和强大的安全保障措施&#xff0c;赢得了广大消费者的青睐和信任。本文将深入探讨四川古力未来科技抖音小店在安全方面…

如何保证消息的可靠性(面试题)

面试题&#xff1a;Rebbitmq怎么保证消息的可靠性 1&#xff0c;消费端可靠性保证&#xff1a; 消息确认&#xff08;Acknowledgements&#xff09;&#xff1a; 消费者在接收到消息后&#xff0c;默认情况下RabbitMQ会自动确认消息&#xff08;autoAcktrue&#xff09;。为…

C++ | Leetcode C++题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isValid(string s) {int n s.size();if (n % 2 1) {return false;}unordered_map<char, char> pairs {{), (},{], [},{}, {}};stack<char> stk;for (char ch: s) {if (pairs.count(ch)) {if (…

新书速览|Vue.js+Node.js全栈开发实战

掌握Vue.js、Node.js、MySQL全栈开发方法 本书内容 《Vue.jsNode.js全栈开发实战》以掌握Web全栈开发技术为目标&#xff0c;以Node.js和Vue.js原生开发和项目实战为主线&#xff0c;详细介绍Node.js Vue.js全栈开发技术。本书内容丰富、实例典型、实用性强&#xff0c;配套示…

C语言题目:寻找矩阵最值

题目描述 输入一个正整数n (1≤ n ≤6),再输入一个n 行n列的矩阵&#xff0c;找出该矩阵中绝对值最大的元素以及它的行下标和列下标。 输入格式 n nxn 输出格式 数 行 列 样例输入 2 1 2 3 4 样例输出 4 2 2 代码解析 包含标准输入输出库和数学库: #include <stdi…

进入无尘室车间的穿着要求及注意事项

随着技术的不断发展&#xff0c;无尘室已成为许多行业中不可或缺的环节&#xff0c;尤其是在电子、制药、生物工程等领域。进入无尘室车间不仅仅是一项简单的任务&#xff0c;而是需要严格遵守一系列穿着要求和注意事项&#xff0c;以确保工作环境的洁净度和产品的质量。本文优…

Spingboot落地国际化需求,Springboot按照请求的地区返回信息

文章目录 一、国际化1、概述2、Spring国际化 二、springboot简单使用国际化1、定义MessageSource2、定义message配置文件3、测试 三、根据请求的地区获取信息1、定义message配置文件2、定义配置类3、基础模板工具4、消息模板定义枚举5、测试一下6、总结 一、国际化 1、概述 国…

【新资讯】行云绽放与瀚高完成兼容性认证,携手推进国产化进程

近日&#xff0c;深圳市行云绽放科技有限公司自研的产品行云管家堡垒机与瀚高软件公司通过共同测试&#xff0c;瀚高数据库管理系统V9.0与行云管家堡垒机V7完成了产品兼容性认证。此次认证的成功&#xff0c;进一步完善了行云管家堡垒机的产品适配能力&#xff0c;扩展了信创生…

JMeter 使用

初衷 网上有很多JMeter的教程都很优秀&#xff0c;但是我想按照我对JMeter的理解出一篇教程&#xff0c;以便于我以后作为开发人员可以自己对自己写的代码进行性能测试。 1、首先JMeter它的主要作用是性能测试 &#xff08;1&#xff09;负载测试&#xff1a;同时发生的用户…

Spring 之 IoC概述

目录 1. IoC概述 1.1 控制反转 1.2 依赖注入 2. IoC容器在Spring中的实现 2.1 BeanFactory 2.2 ApplicationContext 2.2.1 ApplicationContext的主要实现类 1. IoC概述 全称&#xff1a;Inversion of Control&#xff0c;译为 “控制反转” Spring通过IoC容器来管理所有…

【JS】判断对象是否为空4种方法总结

1. JSON.stringify(obj) ‘{}’ const obj {};const obj2 {name: 张三,age: 10 } console.log(JSON.stringify(obj) {}); // true console.log(JSON.stringify(obj2) {}); // false注意&#xff1a;JSON.stringify()只能序列化对象的可枚举的自有属性&#xff0c;即如果有…

英译汉早操练(六)

英译汉早操练&#xff08;五&#xff09;-CSDN博客文章浏览阅读233次&#xff0c;点赞2次&#xff0c;收藏5次。it serves as a notable example of a pattern that Andrea Gabor charts in “After the Education Wars.”https://blog.csdn.net/weixin_41953346/article/detai…

题目:学习使用static的另一用法。

题目&#xff1a;学习使用static的另一用法。    There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated …

数组与链表:JavaScript中的数据结构选择

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

每日一题:有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 注…

git submodule---同步最新的内容

0 Preface/Foreword 1 同步最新submodule内容到repo中 项目的repo包含了一个子模块&#xff0c;在开发过程中&#xff0c;经常需要同步子模块最新的commit到repo中。该如何操作呢&#xff1f; 本地在克隆时候&#xff0c;已经同步把子模块中的内容克隆下来了&#xff0c;但是…