
蓝桥杯算法
算法练习
P_ning
一只小菜鸟的笔记
我的大部分笔记存放处在码云的仓库里面https://gitee.com/P_n_ing
有空的话我会把详细的步骤会写在这里
(当然是在我打完游戏后如果还有空闲的时间( ´◔ ‸◔`))
展开
-
2019蓝桥杯B组国赛
试题 A: 递增序列【问题描述】对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这两个字母从左向 右看、或者从上向下看是递增的。例如,如下矩阵中LANN QIAO 有LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN 等 13 个 递增序列。注意当两个字母是从左下到右上排列时,从左向右看和从上向下看 是不同的顺序。 对于下面的 30 行 50 列的矩阵,请问总共有多少个递增序列? (如果你原创 2020-11-11 16:42:45 · 967 阅读 · 2 评论 -
2018蓝桥杯B组国赛
1.标题:三角形面积已知三角形三个顶点在直角坐标系下的坐标分别为:(2.3, 2.5)(6.4, 3.1)(5.1, 7.2)求该三角形的面积。注意,要提交的是一个小数形式表示的浮点数。要求精确到小数后3位,如不足3位,需要补零。思路:利用两点求距离的公式求除三边长度利用海伦公式根据三边长度求三角形面积:s=1/2(a+b+c),Math.sqrt(s*(s-l1)(s-l2)(s-l3))代码:public class Main { public static vo原创 2020-11-09 20:51:12 · 456 阅读 · 2 评论 -
数独
你一定听说过“数独”游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。数独的答案都是唯一的,所以,多个解也称为无解。本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。本题的要求就是输入数独题目,程序输出数独的唯一解。我们保证所有已知数据的格式都是合法的,并且题目有唯一的解。格式要求,输入9行,每行9个字符,0代表未知,其它数字为已知。输出9行,每行9原创 2020-12-25 20:49:05 · 309 阅读 · 1 评论 -
2020-10-10
这里写目录标题第一题:组队第二题:不同子串第三题:数列求值第四题:数的分解第五题:迷宫第一题:组队题目描述作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?(如果你把以上文字复制到文本文件中,请务必检查复制的内容是否与文 档中的一致。在试题目录下有一个文件 team.txt,内容与上面表格中的相同, 请注意第一列是编号)【答案提原创 2020-10-10 16:15:00 · 299 阅读 · 0 评论 -
审美课
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 《审美的历程》课上有n位学生, 帅老师展示了m幅画,其中有些是梵高的作品, 另外的都出自五岁小朋友之手。 老师请同学们分辨哪些画的作者是梵高, 但是老师自己并没有答案,因为这些画看上去都像是小朋友画的…… 老师只想知道,有多少对同学给出的答案完全相反, 这样他就可以用这个数据去揭穿披着皇帝新衣的抽象艺术了(支持帅老师^_^)。 答案完全相反是指对每一幅画的判断都相反。输入格式 第一行两个数n和m,表示原创 2020-10-07 16:40:59 · 164 阅读 · 0 评论 -
力扣算法——78_子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]递归写法import java.util.*;public class Main { public List<List<Integer>> rs = new Arra原创 2020-09-20 16:36:36 · 321 阅读 · 0 评论 -
给一个字符串切割为ip
import java.util.*;public class Main { public static void main(String[] args) { String ipAdress = new String("19216801"); char[] ip = ipAdress.toCharArray(); dfs(ip,0,new String[4],0); } public static void dfs(char[.原创 2020-09-17 21:31:15 · 373 阅读 · 0 评论 -
力扣算法——94_二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]递归写法import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { TreeNode t1 = new TreeNode(1);原创 2020-09-14 13:49:02 · 128 阅读 · 0 评论 -
力扣算法——79_单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 word = "ABCB", 返回 f原创 2020-09-13 19:54:27 · 227 阅读 · 0 评论 -
二进制数数
算法训练 二进制数数资源限制时间限制:1.0s 内存限制:256.0MB问题描述 给定L,R。统计[L,R]区间内的所有数在二进制下包含的“1”的个数之和。 如5的二进制为101,包含2个“1”。输入格式 第一行包含2个数L,R输出格式 一个数S,表示[L,R]区间内的所有数在二进制下包含的“1”的个数之和。样例输入2 3样例输出3数据规模和约定 L<=R<=100000;import java.util.Scanner;public cla原创 2020-09-13 14:49:49 · 249 阅读 · 0 评论 -
大等于n的最小完全平方数
大等于n的最小完全平方数 资源限制时间限制:1.0s 内存限制:256.0MB问题描述 输出大等于n的最小的完全平方数。 若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数 Tips:注意数据范围输入格式 一个整数n输出格式 大等于n的最小的完全平方数样例输入71711样例输出71824数据规模和约定 n是32位有符号整数import java.util.Scanner;public class Main { public原创 2020-09-13 14:26:50 · 234 阅读 · 0 评论 -
猴子吃包子
问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子, 但是,它吃不同的包子速度也不同; 肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个; 现在有x1个肉包,y1个韭菜包,z1个没有馅的包子; 问:猴子吃完这些包子要多久?结果保留p位小数。输入格式 输入1行,包含7个整数,分别表示吃不同包子的速度和不同包子的个数和保留的位数。输出格式 输出一行,包含1个实数,表示吃完所有包子的时间。样例输入4 3 2 20 30 15 2样例输出22.50数原创 2020-09-12 21:51:17 · 147 阅读 · 0 评论 -
求n!的最右边的那个非0数字
个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5!=1*2*3*4*5=120,因此5!最右边的那个非0的数字是2。再如,7!=5040,因此7!最右边的那个非0的数字是4。再如,15!= 13076743680原创 2020-09-12 21:12:07 · 755 阅读 · 0 评论 -
力扣算法——1_两数之和
给定一个整数数组nums和一个目标值target请你在该数组中找出和为目标值的那两个整数并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2020-09-11 20:08:59 · 102 阅读 · 0 评论 -
18年蓝桥杯javaB组
18年蓝桥杯javaB组1.第几天2.方格计数3.复数幂1.第几天2000年的1月1日,是那一年的第1天。那么,2000年的5月4日,是那一年的第几天?注意:需要提交的是一个整数,不要填写任何多余内容。答案:125解法:打开系统闹钟看着时间一个个加;或者受用excel文档做题也是很快2.方格计数如图所示,在二维平面上有无数个1x1的小方格。我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。你能计算出这个圆里有多少个完整的小方格吗?思路:看第一象限,格子右上角到圆心的长度原创 2020-09-07 21:19:12 · 198 阅读 · 0 评论 -
阿里云-天池-写作业
public class Solution { /** * @param cost: the cost * @param val: the value * @return: the all cost */ public long doingHomework(int[] cost, int[] val) { // Write your code here. long rs=0; .原创 2020-08-16 12:08:57 · 291 阅读 · 0 评论 -
阿里云-天池-移动的圆
public class Solution { /** * @param position: the position of circle A,B and point P. * @return: if two circle intersect return 1, otherwise -1. */ int rs=-1;//返回的判断结果 public int IfIntersect(double[] position) { // wri.原创 2020-08-16 12:07:35 · 253 阅读 · 0 评论 -
1.1数据结构和算法的介绍
数据结构和算法的关系数据结构和算法的关系数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构。学号数据结构可以编写出更漂亮更有效率的代码。程序=数据结构+算法数据结构是算法的基础,也就是要先学好算法就必须学号数据结构,应为很多算法都是基于结构本身的特性创造出来的...原创 2020-08-04 18:46:08 · 95 阅读 · 0 评论 -
知识点补充----什么是互质?
什么是互质?互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者的特殊情形。备注今天在学习一个算法的时候突然发现了这个词,然后一查发现这个东东竟然是小学数学教材里面的知识点,果然高考后学的东西都还给老师了。日常愧疚+1...原创 2020-08-02 15:06:01 · 1074 阅读 · 0 评论 -
背包算法
简单理解有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。原创 2020-08-01 22:43:08 · 154 阅读 · 0 评论 -
欧几里德算法的个人理解
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。定理:gcd(a,b) = gcd(b,a mod b)证明:a可以表示成a = kb + r,则r = a mod b假设d是a,b的一个公约数,则有d|a, d|b,而r = a - kb,因此d|r因此d是(b,a mod b)的公约数假设d 是(b,a mod b)的公约数,则d | b , d |r ,但是a = kb +r因此d也是(a,b)的公约数因此(a,b)和(b,a mod b)的公约数是一样的,其最大原创 2020-07-24 22:35:16 · 396 阅读 · 0 评论 -
17年蓝桥杯javaB组
17年蓝桥杯javaB组1.购物单2.纸牌三角形1.购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。 取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。 你原创 2020-07-18 22:29:42 · 201 阅读 · 0 评论 -
使用递归和回溯枚举出一个数组的所有排列情况
public static void f(int[] arr, int k) { if (k >= arr.length) { System.out.println(Arrays.toString(arr)); return; } for (int i = k; i < arr.length; i++) { { int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } f(arr,原创 2020-07-13 22:25:42 · 223 阅读 · 0 评论 -
16年蓝桥杯javaB组
15年蓝桥杯javaB组1. 煤球数目生日蜡烛(结果填空)1. 煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),…如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。答案为:171700public static void main(String[] args){ int n=0; int sum = n;原创 2020-07-10 22:32:54 · 357 阅读 · 0 评论 -
15年蓝桥杯javaB组
15年蓝桥杯javaB组1.三角形面积2.立方变自身1.三角形面积如图1所示。图中的所有小方格面积都是1。那么,图中的三角形面积应该是多少呢?请填写三角形的面积。不要填写任何多余内容或说明性文字 答案为:28思路:看成一个正方形减去3个三角形即可,64-8-12-16=282.立方变自身观察下面的现象,某个数字的立方,按位累加仍然等于自身。1^3 = 1 8^3 = 512 5+1+2=817^3 = 4913 4+9+1+3=17请你计算包括1,8,17在内,符合原创 2020-07-06 23:10:40 · 687 阅读 · 0 评论 -
14年蓝桥杯javaB组
14年蓝桥杯javaB组1.武功秘籍2.切面条1.武功秘籍武功秘籍 题目描述 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。 他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的武功,又不想带着整本书。 请问他至少要撕下多少张纸带走? 这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容答案是7,可以使用Excel表格快速求出,如图所示2.切面条 题目描述 一根高筋原创 2020-07-02 21:54:30 · 755 阅读 · 0 评论 -
13年蓝桥杯javaB组
末世纪的星期天曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会是世界末日有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!于是,“谣言制造商”又修改为星期日是世界末日1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?普通方法public class Main { public static void main(String原创 2020-07-01 17:43:39 · 458 阅读 · 0 评论 -
2018年刑侦科推理试题之shell写法
##统计每一个选项的个数count(){a=0b=0c=0d=0for((i=0;i<=${#aw[*]};i++))do case ${aw[${i}]} in a) a=`expr $a + 1` ;; b) ...原创 2020-05-06 17:32:24 · 271 阅读 · 1 评论 -
2018年刑侦科推理试题之java写法
import java.util.Arrays;public class Main { public static Boolean isTrue(char[] aw) { Boolean rs = true;// 第一题永远成立 for (int i = 2; i <= aw.length; i++) { if (rs == false) { return ...原创 2020-04-29 21:01:59 · 272 阅读 · 0 评论 -
数列排序(常见的排序反法)
问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9方法一:函数排序import java.util.Arrays...原创 2020-03-20 19:34:17 · 537 阅读 · 0 评论 -
序列求和
问题描述求1+2+3+…+n的值。输入格式输入包括一个整数n。输出格式输出一行,包括一个整数,表示1+2+3+…+n的值。样例输入4样例输出10样例输入100样例输出5050数据规模与约定1 <= n <= 1,000,000,000。方法:import java.util.Scanner;public class Main { public s...原创 2020-03-20 19:16:24 · 333 阅读 · 0 评论 -
圆的面积(控制输出小数点位数)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定圆的半径r,求圆的面积。输入格式输入包含一个整数r,表示圆的半径。输出格式输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。样例输入4样例输出50.2654825数据规模与约定1 <= r <= 10000。提示本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量...原创 2020-03-19 18:18:28 · 526 阅读 · 0 评论 -
Fibonacci数列
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。样例输入10样例输出55样例输入22样例输出7704数据规模与约定1 <= n <= 1,000,000。方...原创 2020-03-17 11:54:49 · 243 阅读 · 0 评论 -
小数点位数的解决
控制小数点位数DecimalFormat df = new DecimalFormat( "0.00000 ");数字过大用BigInteger bi = new BigInteger("12345678");原创 2019-11-20 13:11:58 · 206 阅读 · 0 评论 -
4.3.斐波那契数列_兔子
package study;public class Main { public static int rabbit(int month) { if(month==1||month==2) { return 1; }else { return rabbit(month-1)+rabbit(month-2); } } public static void main(...原创 2019-11-12 20:12:42 · 129 阅读 · 0 评论 -
4.2.到100的累乘
package study;import java.math.BigInteger;public class Main {public static BigInteger sum = BigInteger.valueOf(1);public static BigInteger climb(int n) {if(n!=1) {BigInteger num =BigInteger.valu...原创 2019-11-12 20:10:39 · 435 阅读 · 0 评论 -
4.1.到100的累加
package study;public class Main { public static int sum=0; public static int add(int n) { if(n!=0) { sum+=n; add(--n); } return sum; } public static void main(String[] args) {...原创 2019-11-12 20:09:40 · 133 阅读 · 0 评论 -
3.5找到数组中重复的元素和重复个数
package study;import java.util.ArrayList;public class Main { public static void main(String[] args) { int[] a = {2,5,78,3,56,8,8,3,87,4,9,4,8,4,9,9,8,3,8,4,8,4}; ArrayList<Integer> l1 =...原创 2019-11-12 20:08:08 · 276 阅读 · 0 评论 -
3.4去除重复元素
package study;import java.util.ArrayList;public class Mian {//思路:把a数组中的元素存入list中,如果发现和list里面重复,则将a数组里面的元素标记成0//缺点:因为标记符号为0;所以数组元素不能包括0 public static void main(String[] args) { int[] a = {2,5,...原创 2019-11-12 20:07:32 · 142 阅读 · 0 评论 -
3.3找到数组中最小值及其下标
package study;public class Main { public static void main(String[] args) { int[] a = {4,7,21,78,24,17,3,94,5,2,3}; int min = a[0]; int index= 0; for(int i=1;i<a.length;i++) { if(min&g...原创 2019-11-12 20:06:42 · 5642 阅读 · 0 评论