蓝桥杯Java B组笔记
文章平均质量分 52
小科粒
我喜欢黑夜……
展开
-
动态规划算法
动态规划算法动态规划题目特点:1. 计数2. 求最大值最小值3. 求存在性例题1. 换硬币 ——求最值动态规划2. 不同的路径——计数型动态规划3. 跳跃游戏——存在型动态规划动态规划题目特点:1. 计数1)有多少种方式从左上角走到右下角2)有多少种加法选出k个数和是sum2. 求最大值最小值1)从左上角到右下角路径的最大数字和2)求最长上升子序列长度3. 求存在性1)取石子游戏,先手是否必胜2)能不能选出k个数使和是sum例题1. 换硬币 ——求最值动态规划题目描述:给出不同原创 2021-06-03 14:34:55 · 126 阅读 · 2 评论 -
Java实现全排列
Java实现全排列要点代码时间复杂度分析要点深搜+回溯全排列可以通过构造一棵树,对这棵树进行深度搜索,便可得到全排列。对于树的每一个分支,在向下深度搜索的时候,要对上一层访问过的元素进行标记,以免重复访问。访问完一条分支之后,再回溯到根结点,访问其他分支,回溯的过程要对标记过的元素进行撤销标记(逆处理)。其余细节在代码注释中体现。代码import java.util.List;import java.util.ArrayDeque;import java.util.ArrayList;原创 2021-05-30 17:45:58 · 1221 阅读 · 0 评论 -
蓝桥杯赛前整理
1. 全排列//全排列 例:abc acb bac bca cab cbapublic class Main4 { //从第k个元素开始的全排列 public static void f(char[] data,int k) { if(k==data.length) { System.out.println(data); } for(int i=k;i<data.length;i++) { char t = data[i]; data[i] = data[k]原创 2021-04-18 08:07:58 · 117 阅读 · 0 评论 -
第六届蓝桥杯Java B组 三羊献瑞
Description观察下面的加法算式:其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。Input没有输入。Output输出“三羊献瑞”所代表的四位数字。import java.util.Arrays;/* a b c d + e f g b e f c b i */public class _三羊献瑞_ { //用于检查这个数组中的元素是否各不相同 public stati原创 2021-04-11 11:06:19 · 121 阅读 · 0 评论 -
位运算的技巧
在处理整型数值时,可以直接对组成整性数值的各个位进行操作。这意味着可以使用屏蔽技术获得整数中的各个位&(与)、|(或)、^(异或)、~(非/取反)>>和>>运算符将二进制位进行右移或者左移操作>>>运算符将用0填充高位;>>运算符用符号位填充高位,没有<<<运算符对于int型,1<<35与1>>3时相同的,而做百年的操作数是long型时需对右侧操作数模64与:都为1结果为1;或:有一个为1结果.原创 2021-03-22 21:09:11 · 83 阅读 · 0 评论 -
第十届蓝桥杯Java B组 数的分解
数的分解Description把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和1001+1000+18 被视为同一种。Input没有输入。Output这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。package test2019;import java.ut原创 2021-03-20 21:00:21 · 173 阅读 · 0 评论 -
第四届蓝桥杯Java B组 三部排序
三部排序Description一般的排序有许多经典算法,如快速排序、希尔排序等。但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。比如,对一个整型数组中的数字进行分类排序:使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!以下的程序实现了该目标。其中x指向待排序的整型数组,len是数组的长度。Input如果给定数组:25,18,-2,0,16,原创 2021-03-07 09:51:28 · 147 阅读 · 0 评论 -
第四届蓝桥杯Java B组 有理数类
有理数类Description有理数就是可以表示为两个整数的比值的数字。一般情况下,我们用近似的小数表示。但有些时候,不允许出现误差,必须用两个整数来表示一个有理数。这时,我们可以建立一个“有理数类”,下面的代码初步实现了这个目标。为了简明,它只提供了加法和乘法运算。内部使用该类的示例:Rational a = new Rational(1,3);Rational b = new Rational(1,6);Rational c = a.add(b);System.out.println(a原创 2021-03-07 09:41:36 · 113 阅读 · 0 评论 -
第四届蓝桥杯Java B组 振兴中华
振兴中华Description小明参加了学校的趣味运动会,其中的一个项目是:跳格子。地上画着一些格子,每个格子里写一个字,如下所示:从我做起振我做起振兴做起振兴中起振兴中华比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。要求跳过的路线刚好构成“从我做起振兴中华”这句话。请你帮助小明算一算他一共有多少种可能的跳跃路线呢?Input没有输入。Output输出可能次数。分析:递归算法:dfs+回溯原创 2021-03-07 09:28:03 · 99 阅读 · 0 评论 -
第四届蓝桥杯Java B组 马虎的算式
马虎的算式Description小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为 36 x 495 = 396 x 45 = 17820类似这样的巧合情况可能还有很多,比如:27 x 594 = 297 x 54假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如: ab x cde = adb x ce原创 2021-03-07 09:16:01 · 160 阅读 · 0 评论 -
第四届蓝桥杯Java B组 世纪末的星期
Description曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会…有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!于是,“谣言制造商”又修改为星期日…1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?请回答该年份(只写这个4位整数,不要写12月31等多余信息)Input没有输入。Output见上文描述。分析:原创 2021-03-06 21:30:53 · 134 阅读 · 0 评论