#算法图解

算法笔记_044:表达式计算求值(Java)

/目录1问题描述2解决方案问题描述  输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式  输入一行,包含一个表达式。输出格式  输出这个表达式的值。样例输入1-2+3*(4-5)样例输出-4数据规模和约定  表达式长度不超过100,表达式运算合法且运算过程都在int内进行。 &...

算法笔记_045:币值最大化问题(Java)

/目录1问题描述2解决方案2.1动态规划法给定一排n个硬币,其面值均为正整数c1,c2,...,cn,这些整数并不一定两两不同。请问如何选择硬币,使得在其原始位置互不相邻的条件下,所选硬币的总金额最大。本文所写代码思想参考自《算法设计与分析基础》第三版上一段讲解,具体如下:  具体代码如下:pack...

算法笔记_046:跳台阶问题(Java)

/目录1问题描述2解决方案2.1递归法2.2迭代法一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。如果整个台阶只有1级,则显然只有一种跳法。如果台阶有2级,则有两种跳法:一种是分两次跳,每次跳1级;另一种是一次跳2级。推广到一般情况。则可以把n级台阶时的跳法看成是n的函数,记为f(n)。当n&...

算法笔记_047:复数运算(Java)

/目录1问题描述2解决方案编程实现两个复数的运算。设有两个复数和,则他们的运算公式为:  要求:(1)定义一个结构体类型来描述复数。  (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。  (3)必须使用结构体指针的方法把函数的计算结果返回。  说明:用户输入:运算符号(+,-,*,/)abcd.  输出:...

算法笔记_048:找零问题(Java)

/目录1问题描述2解决方案2.1动态规划法现需找零金额为n,则最少需要用多少面值为d1<d2<d3<...<dm的硬币?(PS:假设这m种面值d1<d2<d3<...<dm的硬币,其中d1=1,且每种硬币数量无限可得)本文编码思想参考自《算法设计与分析基础》第三版,具体讲...

算法笔记_049:奇偶数排序(Java)

/目录1问题描述2解决方案2.1一头一尾指针往中间扫描法2.2一前一后两个指针同时往后扫描法给定一个整数数组,请调整数组中数的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。具体代码如下:packagecom.liuzhen.array_2;publicclassOddEve...

算法笔记_050:硬币收集问题(Java)

/目录1问题描述2解决方案2.1动态规划法在n*m格木板中放有一些硬币,每格的硬币数目最多为一个,在木板左上方的一个机器人需要收集尽可能多的硬币并把它们带到右下方的单元格。每一步,机器人可以从当前的位置向右移动一格或向下移动一格。当机器人遇到一个有硬币的单元格时,就会将这枚硬币收集起来。设计一个算法找出机器人能找到的最...

算法笔记_051:荷兰国旗问题(Java)

/目录1问题描述2解决方案现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球、白球、蓝球。这个问题之所以叫荷兰国旗,是因为将红白蓝三色的小球弄成条状物,并有序排列后正好组成荷兰国旗。为了方便编码与讨论,用数字0表示红球,数字1表示白球,数字2表示蓝球,所以最后生成的排...

算法笔记_052:蓝桥杯练习Multithreading(Java)

/目录1问题描述2解决方案问题描述  现有如下一个算法:  repeatnitimes  yi:=y  y:=yi+1  endrepeat  令n[1]为你需要算加法的第一个数字,n[2]为第二个,...n[N]为第N个数字(N为需要算加法的数字个数),  并令y初始值为0,先令i=1运行这个算法(如上所示,重复n[...

算法笔记_053:最优二叉查找树(Java)

/目录1问题描述2解决方案在了解最优二叉查找树之前,我们必须先了解何为二叉查找树?引用自百度百科一段讲解:二叉排序树(BinarySortTree)又称二叉查找树(BinarySearchTree),亦称二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于或...

算法笔记_054:Prim算法(Java)

/目录1问题描述2解决方案2.1贪心法何为Prim算法?此处引用网友博客中一段介绍(PS:个人感觉网友的这篇博客对于Prim算法讲解的很清楚,本文与之相区别的地方在于具体实现代码的不同,该网友是使用C++实现,而本文是使用Java实现。其他理论讲解可以参考该网友的博客哦,具体链接看文末参考资料) 普里姆算法(...
代码星球 ·2021-02-09

算法笔记_055:蓝桥杯练习 Tricky and Clever Password (Java)

/目录1问题描述2解决方案问题描述  在年轻的时候,我们故事中的英雄——国王Copa——他的私人数据并不是完全安全地隐蔽。对他来说是,这不可接受的。因此,他发明了一种密码,好记又难以破解。后来,他才知道这种密码是一个长度为奇数的回文串。  Copa害怕忘记密码,所以他决定...

算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)

/目录1问题描述2解决方案2.1递归法2.2递推法  问题描述  每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现...

算法笔记_057:蓝桥杯练习 最大的算式 (Java)

/目录1问题描述2解决方案问题描述  题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:  N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:  1*2*(3+4...

算法笔记_058:蓝桥杯练习 2的次幂表示(Java)

/目录1问题描述2解决方案问题描述  任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。  将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0  现在约定幂次用括号来表示,即a^b表示为a(b)  此时,137可表示为:2(7)+2(...
首页上一页...1415161718...下一页尾页