
算法
啊泽泽泽zz
东莞理工大学生
展开
-
算法训练 | 第39级台阶
文章目录一、题目描述二、方法一(分左右脚递归)三、方法二(合并递归)(更好理解)一、题目描述题目描述:小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?输出格式:输出一个整数二、方法一(分左右脚递归)public class 第三十九级台阶 { public sta原创 2020-10-16 16:22:23 · 428 阅读 · 0 评论 -
蓝桥杯 | 加法变乘法
一、题目描述我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为 2015比如:1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交 10)。注意:需要你提交的是一个整数,不要填写任何多余的内容。二、解析思路:刚开始想到用暴力双重循环方式,先匹配第一个乘法算式,再匹配第二个乘法算式原创 2020-09-07 22:55:21 · 354 阅读 · 0 评论 -
蓝桥杯 | 分糖果(数组)
一、题目描述标题:分糖果有 n 个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都把自己的糖果分一半给左手边的孩子。一轮分糖后,拥有奇数颗糖的孩子由老师补给 1 个糖果,从而变成偶数。反复进行这个游戏,直到所有小朋友的糖果数都相同为止。你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。【格式要求】程序首先读入一个整数 N (2<N<100),表示小朋友的人数。接着是一行用空格分开的 N 个偶数(每个偶数不大于 100原创 2020-09-01 13:32:07 · 399 阅读 · 0 评论 -
蓝桥杯 | 扑克排序(详细解析)
一、题目描述问题描述 扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是 2-10、J、Q、K 和 A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。输入五张牌(表示黑桃 2、红桃 3、黑桃 3、方块 A 和梅花 J): 2s3h3sAdJc 输出结果应为:2 s 3 h 3 s J c A d 数组长度固定为 5。二、代码实现pub原创 2020-08-31 19:30:45 · 1765 阅读 · 0 评论 -
算法训练 | 猜字母(StringBuffer实现)
一、题目描述把 abcd…s 共 19 个字母组成的序列重复拼接 106 次,得到长度为 2014 的串。接下来删除第 1 个字母(即开头的字母 a),以及第 3 个,第 5 个等所有奇数位置的字母。得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。二、代码实现public class 猜字母 { public static void main(String[] args) { Stri原创 2020-08-31 00:20:05 · 255 阅读 · 0 评论 -
算法训练 | 六角填数(全排列)
一、题目描述如图所示六角形中,填入 1~12 的数字。使得每条直线上的数字之和都相同。图中,已经替你填好了 3 个数字,请你计算星号位置所代表的数字是多少?二、分析在示例图中把arr[i]的位置固定给某个点(相当于初始化),但是该点的arr[i]的值会随着待会全排列的不同序列而变换,这样就可以判断每条线的和是否相等了。各个点对应数组的位置如下图所示:注意:这里的arr[0]、arr[1]、arr[11] 这三个点是题目给出的,它们的值我们不能更改。(待会写代码可能有容易就忘掉了,就会导致原创 2020-08-29 12:35:00 · 934 阅读 · 0 评论 -
算法训练 | 锦标赛(递归 + 满二叉树)代码详细解析
文章目录一、题目二、分析(思路)三、代码及详细注释解析一、题目题目描述如果要在n个数据中挑选出第一大和第二大的数据(要求输出数据所在位置和值),使用什么方法比较的次数最少?我们可以从体育锦标赛中受到启发。如图所示,8个选手的锦标赛,先两两捉对比拼,淘汰一半。优胜者再两两比拼…直到决出第一名。第一名输出后,只要对黄色标示的位置重新比赛即可。下面的代码实现了这个算法(假设数据中没有相同值)。代码中需要用一个数组来表示图中的树(注意,这是个满二叉树, 不足需要补齐)。它不是存储数据本身,而是存储了数原创 2020-08-28 23:32:12 · 793 阅读 · 1 评论 -
算法训练 | 李白打酒(全排列 or 递归 dfs )
文章目录一、题目描述二、方法一:利用全排列三、方法二:利用递归(dfs)一、题目描述话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒 2 斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店 5 次,遇到花 10 次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇店记为 a,遇花记为 b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数原创 2020-08-28 00:21:21 · 421 阅读 · 0 评论 -
算法训练 | 幸运数(ArrayList)
一、题目描述幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的 “筛法” 生成。 首先从 1 开始写出自然数 1,2,3,4,5,6,....1 就是第一个幸运数。我们从 2 这个数开始。把所有序号能被 2 整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 ....把它们缩紧,重新记序,为:1 3 5 7 9 .... 。这时,3 为第 2 个幸运数,然后把所有能被 3 整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被 3 整除!!删除的应该是 5,11,原创 2020-08-26 19:33:19 · 684 阅读 · 0 评论 -
算法训练 | 剪格子(dfs + 剪枝 + 回溯)
题目描述如下图所示,3 x 3 的格子中填写了一些整数。+--*--+--+|10* 1|52|+--****--+|20|30* 1|*******--+| 1| 2| 3|+--+--+--+我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是 60。本题的要求就是请你编程判定:对给定的 m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。如果无法分割,则输出 0。原创 2020-08-25 23:58:52 · 890 阅读 · 0 评论 -
算法 | 一文玩转全排列(附 实际案例分析)
文章目录一、全排列初识二、问题引入三、递归实现1. 数组元素互不相同2. 数组内有重复元素四、实例分析一、全排列初识从 n 个不同元素中任取 m(m≤n)个元素,按照一定的顺序排列起来,叫做从 n 个不同元素中取出 m 个元素的一个排列。当 m=n 时所有的排列情况叫全排列。二、问题引入看了上面的定义还是一脸糊涂?不要紧,先看看下面的例子,你就会对全排列概念有个具体的认识:对于一个给定的序列 a = [a1, a2, a3, … , an],请设计一个算法,用于输出这个序列的全部排列方式。例如原创 2020-08-25 21:29:17 · 434 阅读 · 0 评论 -
算法训练 || 黄金连分数(大数类)
题目描述黄金分割数 0.61803… 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了 “近视眼”!!言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。...原创 2020-03-20 22:17:56 · 400 阅读 · 0 评论 -
算法训练 || 第39级台阶(递归)
小明刚刚看完电影《第 39 级台阶》。离开电影院的时候,他数了数礼堂前的台阶数,恰好是 39 级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上 1 个或 2 个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完 39 级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。对于这道题目,很容易就能想到用递归来解决问题,但对于题目要...原创 2020-02-14 18:58:54 · 583 阅读 · 0 评论 -
算法训练 || G将军(递归回溯)
G 将军有一支训练有素的军队,这个军队除开 G 将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是 G 将军)。现在 G 将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加队员的独立性,要求如果一名士兵在队中,他的直接上级不能在队中。请问,G 将军有多少种派出队的方法。注意,G 将军也可以作为一个士兵进入队。输入格式输入的第一行包含一个整数 n,表示包...原创 2020-02-14 16:38:30 · 334 阅读 · 0 评论 -
算法训练 || 最长回文子串(中心扩展算法)
问题描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例2:输入: “cbbd”输出: “bb”这是LeetCode的一道关于字符串的题,在官方给出的题解有5种思路,分别是最长公共子串暴力法动态规划中心扩展算法Manacher 算法...原创 2020-02-14 01:33:53 · 368 阅读 · 0 评论 -
算法训练 || 出现次数最多的整数(HashMap)
算法训练 || 出现次数最多的整数(HashMap)问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数 N 也是由用户输入的,最多不会超过 20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。 输入格式:第一行是一个整数 N,N<20;接下来有 N 行,...原创 2020-02-13 15:32:02 · 617 阅读 · 0 评论 -
算法训练 || 八皇后问题(递归回溯)
算法训练 || 八皇后问题(递归回溯)首先说明一下递归和回溯的区别:递归是一种数据结构;回溯是一种算法思想,也可理解为一个解决问题的工具。一、回溯算法回溯算法,简单的说,就是一条路走到黑,无路可走了就回头,从分叉路口找另一条路继续走到黑,如此反复,直到所有路都走完。这个算法思想跟跟深度优先搜索算法(DFS)类似,但两者也有不同之处,体现在:访问序回溯算法对每一个元素的访问都有...原创 2020-02-07 23:09:51 · 443 阅读 · 0 评论