![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
蓝桥杯
文章平均质量分 62
包括从B站免费公开课算法最美学习的笔记,以及对蓝桥杯真题的求解
大果壳Clap
感谢你的关注!
展开
-
第12届蓝桥杯 第一题:《直线》
2021年第12届蓝桥杯竞赛第一题:《直线》题目大意本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。在平面直角坐标系中,两点可以确定一条直线。给定平面上 20 × 2120×21 个整点 {(x, y)|0 ≤ x < 20, 0 ≤ y < 21, x ∈ Z, y ∈ Z}(x,y)∣0≤x<20,0≤y<21,x∈Z,y∈Z,即横坐标是 00 到1919 (包含 00 和 1919) 之间的整数、纵坐标是 00 到 2020 (包含 00 和原创 2022-02-06 15:47:36 · 14387 阅读 · 14 评论 -
第12届蓝桥杯 第三题:《卡片》
第三题:《卡片》题目大意本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。解题思路首先建立一个map映射,将0–9 每个卡片各有2021个存入map:HashMap<Character, Integer> map = new HashMap<Character, Integer>(); String string = "0123456789"; for(char ch : string.toCharArray()) { map.put(原创 2022-02-07 11:04:15 · 7197 阅读 · 0 评论 -
第12届蓝桥杯 第二题:《ASC》
第二题:《ASC》题目大意本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。解题思路送分题。可以从A一个一个数。或者字符强制类型转换为整型完整代码:public class Mian { public static void main(String[] args) { char ch = 'L'; System.out.println((int)ch);//76 }}...原创 2022-02-07 10:14:01 · 382 阅读 · 0 评论 -
第12届蓝桥杯 第七题:《砝码称重》的两种解法dfs和dp算法
第七题:《砝码称重》题目大意解题思路思路1:用闫氏dp分析法:思路2:dfs暴力搜索dfs记住:找重复,找变化,找边界 来写dfs的函数。预定义一个count数组,来存放0-100000的所有数据。每得到一个大于0的重量sum,就令count[sum] = 1。最后打印count数组中为1的数,即可。但是结果会超时,只能拿一半的分数。private static void dfs(int x,int[] w,int sum,int[] count) {//下一个使用砝码的下标,砝码数组原创 2022-02-10 16:28:55 · 3470 阅读 · 6 评论 -
第12届蓝桥杯 第六题:《显示时间》
第五题:《时间显示》题目大意解题思路方法1:我们可以利用Java自带 date 类,实现秒自动转换为时间,然后通过 SimpleDateFormat 类,改变时间的格式。但是要注意咱们是东八区,时间要减去8个小时。方法2:先把单位毫秒化成秒:d = d / 1000;再把日期化成最后一天:d = d % (24*60*60);然后分别求,小时,分钟,和秒int h = (int) (d / 3600);int m = (int) ((d % 3600)/60);int s原创 2022-02-08 13:58:21 · 6800 阅读 · 0 评论 -
第12届蓝桥杯 第八题:《杨辉三角形》— javaB组
第八题:杨辉三角形题目大意解题思路我是看见这个题,没想别的方法,直接去找规律了。果不其然,发现了规律。每个不同数字对应的第几个数可以算出来:数: 1 2 3 4 5下标: 3 5 8 12 17相差: 2 3 5 8 12可以通过代码把1,2,3,4,5在这一列的下标算出来 int[] count = new原创 2022-04-07 20:52:45 · 715 阅读 · 0 评论 -
第12届蓝桥杯 第五题:《路径》
第五题:《路径》题目大意本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。解题思路这是求两个点的最短路径的问题,我们要建立一个二维数组,用于存放初始化每两个点的距离。//将数组初始化为距离 for (int i = 0; i < 2021; i++) { for (int j = 0; j < 2021; j++) { if (i == j) { arr[i][j] = 0; }else if (Math.abs(i - j)原创 2022-02-08 10:48:56 · 1839 阅读 · 1 评论 -
第12届蓝桥杯 第七题:《最少砝码》— javaB组
第七题:java《最少砝码》题目大意解题思路重量: 1 2 3 4 5 6 7 8 9需要的砝码数: 1 2 2 2 3 3 3 3 3可以计算出:重量: 1 需要的砝码数:1 共1个数重量: 2-4 需要的砝码数:2原创 2022-02-10 19:54:59 · 937 阅读 · 0 评论 -
第12届蓝桥杯 第四题:《货物摆放》
第四题:《货物摆放》题目大意本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。解题思路如果直接进行三层for循环嵌套,数据太大,运行不出来。于是我们可以先把n的所有因数求出来.//求N的所有约数,用Arraylist存储 ArrayList<Long> list = new ArrayList<Long>(); for (long i = 1; i*i<=N; i++) { if (N%i == 0) { list.add原创 2022-02-07 17:41:33 · 688 阅读 · 3 评论 -
蓝桥杯算法课《算法最美》笔记——8.贪心策略和动态规划
8 贪心策略与动态规划动态规划和贪心算法都是一种递推算法,均用局部最优解来推导全剧最优解。是对遍历解空间的一种优化当问题具有最优子结构时,可用动态规划,而贪心算法是动态规划的特例。8.1 贪心策略-----遵循某种规则,不断贪心的选取当前最优策略,最终找到最优解-----难点:当前最优未必是全局最优8.1.1 硬币问题有1,5,10,50,100,500元的硬币,各占c1, c5 , c10, c50, c100, c500枚现在用这些硬币来支付A,最少需要多少枚硬币。输入:每一行有6原创 2022-02-05 17:39:26 · 502 阅读 · 0 评论 -
蓝桥杯算法课《算法最美》笔记——4.多维数组和矩阵
4. 多维数组基础题4.1 顺时针打印二维数组题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。[1 2 3 45 6 7 89 10 11 1213 14 15 16]打印1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10思路:一圈一圈的打印。import java.util.ArrayList;import java.util.Arrays;public class 顺时针打印2维数组 { public static void m原创 2022-01-28 13:36:19 · 179 阅读 · 0 评论 -
蓝桥杯算法课《算法最美》笔记——6.数学问题
6 数学问题6.1 巧用进制题目:天平称重:变种三进制用天平称重时,砝码为:1 3 9 27 81 .。。。。。。。等3的指数次幂。(砝码可以放两个盘中)题目要求实现:对用户给定的重量,给出砝码的组合方案,重量<1000000。例如:输入:5输出:9-3-1思路:二进制1001,1代表取,0代表不取,由此可以推出三进制。5=(12)(三进制)5=(1,2)=(2,-1)=(1,-1,-1)//直接暴力破解#include<stdio.h>#include<原创 2022-01-29 20:42:50 · 116 阅读 · 0 评论 -
蓝桥杯算法课《算法最美》笔记——7.递归,DFS,剪枝,回溯等问题
7 深入递归7.1 小白上楼梯问题题目:有一个小孩上楼梯,楼梯有n阶台阶,小孩可以一次上1,2,3阶。请实现一个方法,计算小孩有多少种上楼梯的方式。楼梯 走法1 12 23 44 75 13有规律,假设走(1,2,3)梯,还剩几阶楼梯,加上对应的走法即可。前面都已经求出来了。f(n) = f(n-1) +f(n-2) +f(n-3)// 方式1:递归实现,虽然简洁,但是在会出现超时!public int waysToStep(int原创 2022-01-29 20:43:54 · 503 阅读 · 0 评论 -
蓝桥杯算法课《算法最美》笔记——5、字符串专题
5 字符串问题5.1 字符串翻转请实现一个算法,翻转一个给定的字符串。 测试样例:“This is nowcoder” 返回:“redocwon si sihT”// 方式一public static String reverseString(String s){ int len=s.length(); char[] out=new char[len]; for (int i = 0; i < len; i++) { out[len-i-1]=s原创 2022-01-28 13:37:54 · 99 阅读 · 0 评论 -
蓝桥杯算法课《算法最美》笔记——3. 递归、查找、排序(下)
3. 查找、排序(下)3.1 分治法(快速排序,归并排序)分治法:将原问题划分成若干个规模较小而结构与原问题一致的子问题;递归的解决这些子问题,然后再合并其结果,就得到原问题的解。三个步骤: 分解:将原问题划分成若干个规模较小而结构与原问题一致的子问题 解决:递归的解决这些子问题。若问题足够小,则直接有解。 合并:合并其结果3.1.1 快速排序(重点在于划分)分解:数组划分成两个子数组,左边的数小于居中的数,右边的数大于居中的数。计算下标q也是划分过程的一部分。解决:通过递归调用快速原创 2022-01-28 13:33:20 · 287 阅读 · 0 评论 -
蓝桥杯算法课《算法最美》笔记 ——1、位运算
1. 位运算基础1.1.位运算符&, |, ^, ~ 四个基本运算符A&B:1001&1010 = 1000异或: 如果a、b两个值不相同,则异或结果为1。. 如果a、b两个值相同,异或结果为0异或运算(^)是以二进制数据为基础进行运算的。也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1。将二进制右移(用符号位填充高位) >>将二进制左.原创 2022-01-24 09:43:39 · 367 阅读 · 0 评论 -
蓝桥杯算法课《算法最美》笔记——2. 递归、查找、排序(上)
2. 递归、查找、排序(上)2.1 递归 (1-4切蛋糕思维,5-6找递推公式,7-8划不开,换方法)递归:自身调用自身。关键点:找重复,找变化,找边界。2.1.1 求一个数的阶乘找重复,找变化,找边界。public class 求一个数的阶乘 { public static void main(String[] args) { int n = 4; System.out.println(f(n)); } public static int f(int n) { if(n原创 2022-01-25 20:41:53 · 377 阅读 · 0 评论 -
分配口罩(动态规划,01背包)
分配口罩(动态规划,01背包)题目大意解题思路属于动态规划类型的题目:即(有限制的最优选择问题)我们设A医院分配为的口罩为high,设B医院分配为的口罩为low,题目要求我们求 min(high - low),其中high = sum(所有口罩的总重量)- low:所以原方程化简为:min(sum - 2* low) = min 2*(sum/2 - low) , 即求max(low)所以题目等价为:从15批口罩中选,总价值不超过 sum/2的最大值原创 2022-04-10 16:37:22 · 518 阅读 · 0 评论