![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
题目
文章平均质量分 74
算法与数据结构
花开成景花落为诗
But are we all lost stars.Trying to light up the dark.
展开
-
单位分数求解
一、题目形如:1/a 的分数称为单位分数。可以把1分解为若干个互不相同的单位分数之和。 例如: 1 = 1/2 + 1/3 + 1/9 + 1/18 1 = 1/2 + 1/3 + 1/10 + 1/15 1 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231 等等,类似这样的分解无穷无尽。我们增加一个约束条件:最大的分母原创 2018-01-14 21:18:23 · 613 阅读 · 0 评论 -
java实现二叉查找树与AVL树
一、基本知识(1)、树的概念 二叉树:一棵树中每个节点都不能有多于两个以上的儿子节点。 二叉查找树:对于树中的每一个节点x,它的左子树中所有项的值均小于x节点的值,而它的右子树中所有项的值均大于x节点的值。 AVL树:每个节点的左子树和右子树的高度最多差1的二叉查找树(空树的高度为-1)。 节点的高度:从节点到一个叶子节点的最大长度。(叶子节点是没有儿子的节点) 树的高度:从根节点开始到叶原创 2018-01-13 20:56:45 · 188 阅读 · 0 评论 -
栈---1、中缀表达式到后缀表达式的转化 2、求解后缀表达式的值
一、中缀表达式及后缀表达式例:典型的计算顺序为2+2*3+5=? 上面这个表达式也被成为中缀表达式。 它可以表示为2*3的乘积存为a1,让a1与2相加得到a2,最后5和a2相加得到a3,a3即为该表达式的值。 这种计算顺序可书写成:223*+5+。这便是后缀表达式。二、实现代码中缀表达式到后缀表达式的转化:public class Question { public static vo原创 2018-01-10 20:46:35 · 476 阅读 · 0 评论 -
求最小子序列和,最小的正子序列和,最大子序列乘积问题
注意:以下解法建立在a数组中既包含正数也包含负数的基础上。1、求最小子序列和这个可以直接参考求最大子序列和中第四种方法/* * 最小子序列 */ static int MaxSubsequenceSum(int a[]) { int ThisSum, MaxSum; ThisSum = MaxSum = 0; for (int原创 2018-01-07 20:58:00 · 4817 阅读 · 3 评论 -
求最大子序列和
一、问题给定整数A1,A2,A3……An,求∑ Ak的最大值。(出自《数据结构与算法分析》第二章)二、解决/* * 方法一 */ public static int maxSubSum1(int []a){ int maxSum=0; for(int i=0;i<a.length;i++){ for(int j=0;原创 2018-01-05 22:22:29 · 556 阅读 · 1 评论 -
两种方法求x的n次幂
一、递归方法分析: 在求一个数x的n次幂时,可分为偶数和奇数两种情况来讨论,若x为偶数,则x^n=x^n/2 * x^n/2,若果x为奇数,则x^n=x^(n-1)/2 * x^(n-1)/2 * x。它的基准情况(无需递归即能解出)很明显,就是n==0和n==1时,n==0时,则任何数的0次幂均为1,n==1时,任何数的1次幂均为它本身。有了上述分析后,代码就很容易写出了。public clas原创 2018-01-05 21:16:24 · 21823 阅读 · 4 评论 -
NxN的数组矩阵,每一行,列均从左到右,从上之下递增。
一、问题NxN的数组矩阵,每一行,列均从左到右,从上之下递增。 确定一个数x是否在该矩阵内。二、解决代码public static void main(String[] args) { Scanner scanner=new Scanner(System.in); /*System.out.println("请输入数字N"); int n=scann原创 2018-01-03 21:33:39 · 3265 阅读 · 0 评论 -
正数数组求a[j]-a[i]最大值,j>=i
一、解决代码public class Question28 { public static void main(String[] args) { int a[]=new int[]{ 1,2,3,4,3,3,5 }; returnMax(a); } // 求a[j]-a[i]最大值 static原创 2018-01-03 21:09:36 · 1692 阅读 · 0 评论 -
约瑟夫问题2
一、题目题目描述约瑟夫问题是一个著名的趣题。这里我们稍稍修改一下规则。有n个人站成一列。并从头到尾给他们编号,第一个人编号为1。然后从头开始报数,第一轮依次报1,2,1,2...然后报到2的人出局。接着第二轮再从上一轮最后一个报数的人开始依次报1,2,3,1,2,3...报到2,3的人出局。以此类推直到剩下以后一个人。现在需要求的即是这个人的编号。给定一个int n,代表游戏的人数...原创 2018-02-13 17:30:15 · 1398 阅读 · 0 评论 -
construct the binary tree.
一、题目题目描述Given inorder and postorder traversal of a tree, construct the binary tree.Note:You may assume that duplicates do not exist in the tree.二、分析 中序:DBEAC 后序:DEBCA通过结合图片和中序,后序序列...原创 2018-02-13 17:05:27 · 215 阅读 · 0 评论 -
JAVA题目0-1级
一、题目题目描述编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true;不满足时返回false。 输入描述:第一行是数据个数,第二行是输入的数据输出描述:返回true或者false示例1输入41 5 -5 1输...原创 2018-02-12 16:40:17 · 337 阅读 · 0 评论 -
数组中的逆序对
一、题目 题目描述有一组数,对于其中任意两个数组,若前面一个大于后面一个数字,则这两个数字组成一个逆序对。请设计一个高效的算法,计算给定数组中的逆序对个数。给定一个int数组A和它的大小n,请返回A中的逆序对个数。保证n小于等于5000。测试样例:[1,2,3,4,5,6,7,0],8返回:7二、分析(一)、时间复杂度为O(n^2) public int...原创 2018-02-12 16:16:05 · 199 阅读 · 0 评论 -
斐波那契加强版
一、题目题目描述对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - 1) + F(n - 2),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围内的非负整数,请设计一个高效算法,计算第n项F(n-1)。第一个斐波拉契数为F(0) = 1。给定一个非负整数,请返回斐波拉契数列的第n项,为了防止溢出,请将结果Mod 100000原创 2018-02-12 15:55:12 · 483 阅读 · 0 评论 -
集合的子集
一、题目题目描述请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。测试样例:[123,456,789]返回:{[789,456,123],[789,456],[789,123],[789],[456 123],[456],[123]}二、分析假原创 2018-02-12 15:14:21 · 600 阅读 · 0 评论 -
折纸问题
一、题目题目描述请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".测...原创 2018-02-10 17:40:07 · 200 阅读 · 0 评论 -
递归完成数组的逆序
一、题目题目描述一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。给定一个栈Stack以及栈的大小top,请返回逆序后的栈。测试样例:二、分析一个数列1,2,3,4,5,如果想变成5,4...原创 2018-02-10 17:23:49 · 2460 阅读 · 0 评论 -
生成格雷码
一、题目题目描述在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例:1返回:["0","1"]二、分析1、n=1时,返回0,1 2、n=2时,返回00,01,10,11 3、n=3时,返回000,0...原创 2018-02-10 17:14:40 · 797 阅读 · 0 评论 -
交替字符串
一、题目输入三个字符串s1,s2,s3,判断第三个字符串s3是否由前两个字符串s1和s2交错而成且不改变s1和s2中各个字符原有的相对顺序。例如:如果s1="aabbcc",s2="dbbca",s3="aadbbcbcac",则输出true。二、分析设dp[][],dp[i][j]有两个取值,即true或者false。 当dp[i][j]为true时,它代表s3[0…i+j-1]是由s1[0…i原创 2018-02-17 20:35:12 · 314 阅读 · 0 评论 -
计算组合中乘积最大的一组
一、题目给定一个长度为n的整数数组,只允许使用乘法,不能使用除法,请计算任意n-1个数的组合中乘积最大的一组,并写出算法的时间复杂度。二、方法一:暴力求解(O(n^2)) static int b[] = new int[] { 1, 2, 4, -1, 2, 5 }; static int flag[] = new int[b.length]; static...原创 2018-02-17 19:31:51 · 1267 阅读 · 0 评论 -
最大连续乘积子数组
一、题目//给定浮点数数组,任意取出数组中的若干个连续的数相乘,请找出最大的子数组。//比如:{-2.5,4,0,3,0.5,8,-1},则取出的最大乘积子数组为{3,0.5,8},也就是3,0.5,8这三个数是连续的且乘积是最大的。二、方法一:暴力求解(O(n^2))static double a[] = new double[] { -2.5, 4, 0, 3, 0.5,...原创 2018-02-17 19:15:38 · 732 阅读 · 0 评论 -
硬币表示
一、题目题目描述有数量不限的硬币,币值为25分、10分、5分和1分,请编写代码计算n分有几种表示法。给定一个int n,请返回n分有几种表示法。保证n小于等于100000,为了防止溢出,请将答案Mod 1000000007。测试样例:6返回:2二、分析这一题和完全背包几乎一模一样,每种硬币都是数量不限的,设dp[i][j]为使用第i种硬币来表示j分时表示法有d...原创 2018-02-13 22:05:25 · 208 阅读 · 0 评论 -
背包问题笔记
一、0-1背包问题(1)、问题描述背包容量为V,商品数目为N,第i个商品的价值为v[i],第i个商品的体积为v[i],每件商品最多放入一次,问背包价值最大为多少?(2)、分析每件商品最多放入一次,因此每件商品都有两种可能,一种是放入,另一种是不放入。 OK,假设此时我们正要放入第i件商品,那么此时背包的价值为多少呢? 细想一下,会发现此时背包的价值完全取决于放不放第i件...原创 2018-02-13 21:07:12 · 228 阅读 · 0 评论 -
魔术索引
题目一: 题目描述在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。测试样例:[1,2,3,4,5]返回:false分析:1、当下标index大...原创 2018-02-10 16:59:18 · 256 阅读 · 0 评论 -
机器人走网格
题目一:题目描述有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。测试样例:2,2返回:2分析:这是一道动态规划题目,设二维数组dp,那么dp[i][j]为走到(i,j)的走法,那么可以得出以下的动态规划方程: dp[i][j]=dp[i-原创 2018-02-10 16:35:48 · 993 阅读 · 0 评论 -
牌型种类
一、题目小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?请填写该整数,不要填写任何多余的内容或说明文字。二、方法一:深度优先搜索(dfs) static int sum = 0; //原创 2018-02-18 16:54:34 · 2021 阅读 · 0 评论 -
周年庆宴会
一、题目题目描述 DescriptionUral大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员愿和直接上司一起与会。输入描述 Input Description第一行一个整数N。(1N6000)接下来N行,第i+1行表示i号原创 2018-02-03 19:37:37 · 382 阅读 · 0 评论 -
蚂蚁爬杆
一、题目/*长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。【数据格式】 第一行输入一个整数n (1 < n ...原创 2018-03-25 20:10:15 · 1033 阅读 · 1 评论 -
给出N个数字,不改变原来顺序
一、题目问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号, (括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如: N=5,K=2,5个数字分别为1、2、3、4、5,可以加成: 1*2*(3+4+5)=24 1*(2+3)*(4+5)=45 (1*2+3)*...原创 2018-02-27 14:45:38 · 3076 阅读 · 0 评论 -
K好数
一、题目问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答案对1000000...原创 2018-02-06 16:04:56 · 297 阅读 · 0 评论 -
从1~N中任选出三个数,他们的最小公倍数最大可以为多少
一、题目问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式输入一个正整数N。输出格式输出一个整数,表示你找到的最小公倍数。样例输入9样例输出504数据规模与约定1 <= N <= 10^6。二、分析1、第一想法 刚开始看到这个题目的时候第一想法就是枚举1~N中任意三个数,然后求它们的最小公倍数,从这些最小公倍数中再选择最大的一个即为正确答案原创 2018-02-06 15:38:31 · 7172 阅读 · 5 评论 -
矩阵翻硬币
一、题目小明先把硬币摆成了一个 n 行 m 列的矩阵。 随后,小明对每一个硬币分别进行一次 Q 操作。 对第x行第y列的硬币进行 Q 操作的定义:将所有第 i*x 行,第 j*y 列的硬币进行翻转。 其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。 当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。原创 2018-02-04 21:37:17 · 943 阅读 · 0 评论 -
分糖果
一、题目 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。【格式要求】 程序首先读入一个整数N(2<N<1原创 2018-02-04 20:41:11 · 272 阅读 · 0 评论 -
数独问题
一、问题简介你一定听说过“数独”游戏。 如【图1.png】,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。 数独的答案都是唯一的,所以,多个解也称为无解。 本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。 本题的要求就是输入数独题目,程序输出数独原创 2018-01-14 20:29:30 · 1953 阅读 · 0 评论 -
今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推
一、问题描述今有7对数字:两个1,两个2,两个3,…两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:17126425374635 当然,如果把它倒过来,也是符合要求的。 请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。二、分析问题中要求以74开头,那么可以建立一个数组a,数组中的0代表原创 2018-01-14 20:55:27 · 5527 阅读 · 1 评论 -
分巧克力
一、题目儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者...原创 2018-02-01 14:12:46 · 864 阅读 · 0 评论 -
包子凑数
一、题目小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子原创 2018-02-01 11:24:30 · 227 阅读 · 0 评论 -
纸牌三角形问题
一、问题描述:A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。 下图就是一种排法(如有对齐问题,参看p1.png)。 A 9 6 4 8 3 7 5 2这样的排法可能会有很多。如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?二、分析:根据题意得到限制条件有: 1.正三角形—>三个边长度相同 2原创 2017-12-20 20:18:57 · 1057 阅读 · 0 评论 -
节点选择
一、题目问题描述有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?输入格式第一行包含一个整数 n 。接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。接下来一共 n-1 行,每行描述树上的一条边。输出格式输出一个整数,代表选出的点的权值和的最大值。样例输原创 2018-02-06 17:24:13 · 973 阅读 · 0 评论 -
关联矩阵
一、题目问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵。输入格式 第一行两个整数n、m,表示图中结点和边的数目。n<=100,m<=1000。 接下来m行,每行两个整数a、b,表示图中有(a,b)边。 注意图中可能含有重边,但不会有自环。输出格式 输出该图的关联矩阵,注意请勿改变边和结点的顺序。样例输入5 91 23 11 52 52 3原创 2018-02-07 18:53:16 · 3381 阅读 · 1 评论 -
x星球车队问题
一、题目/**X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如图所示。X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种?为了方便起见,假设检查...原创 2018-03-25 19:57:00 · 952 阅读 · 1 评论