
算法
allyyhh
这个作者很懒,什么都没留下…
展开
-
Maximum Subsequence Sum
Maximum Subsequence SumGiven a sequence of K integers { N1, N2, …, NK }. A continuous subsequence is defined to be { Ni, Ni+1, …, Nj } where 1≤i≤j≤K. The Maximum Subsequence is the ...原创 2019-03-28 12:44:28 · 552 阅读 · 1 评论 -
【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B组-4-黄金连分数
标题: 黄金连分数黄金分割数0.61803… 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!!言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法...原创 2019-03-12 19:59:11 · 290 阅读 · 0 评论 -
问题2057:线段覆盖
分析:直接开辟一个数组,用来模拟木板,数组的元素用来存储所涂的颜色。Java代码:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n ...原创 2019-03-17 16:05:41 · 245 阅读 · 0 评论 -
递归求解汉诺塔问题
问题 2056: 汉诺塔分析:汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 --引用维基百科问题看起来似乎并不复杂,当...原创 2019-03-17 16:01:12 · 702 阅读 · 0 评论 -
【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B(A)组-3(2)-振兴中华
标题: 振兴中华小明参加了学校的趣味运动会,其中的一个项目是:跳格子。地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)从我做起振我做起振兴做起振兴中起振兴中华比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。要求跳过的路线刚好构成“从我做起振兴中华”这句话。请...原创 2019-03-12 16:22:36 · 279 阅读 · 0 评论 -
【蓝桥杯】2016年第七届蓝桥杯大赛个人赛省赛(软件类)真题-Java语言B组(未完)
煤球数目生日蜡烛凑算式分小组抽签方格填数原创 2019-03-20 21:36:46 · 264 阅读 · 0 评论 -
【蓝桥杯】2014年第五届蓝桥杯省赛真题-Java语言B组-9-地宫取宝(历届试题 地宫取宝)
标题:地宫取宝X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。请你帮小明算...原创 2019-03-17 10:49:30 · 380 阅读 · 0 评论 -
【蓝桥杯】2016年第七届蓝桥杯省赛真题-Java语言B组-6-方格填数
方格填数如下的10个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+(如果显示有问题,也可以参看【图1.jpg】)填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的整数...原创 2019-03-20 20:25:55 · 380 阅读 · 0 评论 -
【蓝桥杯】2016年第七届蓝桥杯省赛真题-Java语言B组-5-抽签
抽签X星球要派出一个5人组成的观察团前往W星。其中:A国最多可以派出4人。B国最多可以派出2人。C国最多可以派出2人。…那么最终派往W星的观察团会有多少种国别的不同组合呢?下面的程序解决了这个问题。数组a[] 中既是每个国家可以派出的最多的名额。程序执行结果为:DEFFFCEFFFCDFFFCDEFFCCFFFCCEFFCCDFFCCDEFBEFFFBDF...原创 2019-03-20 19:40:26 · 289 阅读 · 0 评论 -
【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B(C)组-2(3)-马虎的算式
标题: 马虎的算式 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是对的!! 因为 36 * 495 = 396 * 45 = 17820 类似这样的巧合情况可能还有很多,比如:27 * 594 = 29...原创 2019-03-12 12:09:55 · 186 阅读 · 0 评论 -
【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B组-1-世纪末的星期
标题: 世纪末的星期曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会…有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!于是,“谣言制造商”又修改为星期日…1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?请回答该年...原创 2019-03-12 11:49:01 · 281 阅读 · 0 评论 -
怎样实现大整数相乘?
上次整理过一篇《怎样实现大整数相加?》的文章,有兴趣的小伙伴可以先看一看。那么,大整数相乘又是如何实现的呢?问题:如果给出两个很大很大的整数,这两个数大到long类型也装不下,比如100位整数,如何求它们的乘积呢?分析:我们同样可以像大数加法那样,用“列竖式”的方法来求解。怎样列出这个乘法竖式呢?以 93281 X 2034 为例,竖式如下:在程序中,我们可以利用int型数组,把两...原创 2019-03-16 19:44:51 · 1000 阅读 · 0 评论 -
怎样实现大整数相加?
问题:如果给出两个很大很大的整数,这两个数大到long类型也装不下,如何求他们的和呢?回顾起小学数学,当我们需要计算两个较大数目的加减乘除,我们是用列竖式的方式来计算的。因为对于较大的整数,我们无法一步就直接计算出结果,所以不得不把计算过程拆分成一个一个小步骤来完成。不仅仅是人脑,对于计算机来说也可以这样解决。程序不可能通过一条指令计算出两个大整数之和,却可以像列竖式一样将运算拆解成若干小...原创 2019-03-16 17:41:26 · 27922 阅读 · 2 评论 -
【蓝桥杯】2014年第五届蓝桥杯省赛真题-Java语言B组-8-分糖果(历届试题 分糖果)
分析:用数组存储小朋友的糖果数。循环模拟分一半糖果给左边小朋友,奇数糖果数又老师补发一颗的过程,直到小朋友的 糖果数量相等。注意数组首尾的处理。代码实现:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(Sy...原创 2019-03-16 16:43:09 · 414 阅读 · 0 评论 -
【蓝桥杯】2014年第五届蓝桥杯大赛个人赛省赛(软件类)真题-Java语言B组
武功秘籍 结果填空 (满分2分)------考查书的构造方式,直接手算,思维题 切面条 结果填空 (满分5分) ------发现规律,归纳推理,直接手算,思维题 猜字母 结果填空 (满分6分)------数组中元素的挪动和挤压 大衍数列 代码填空 (满分4分)------考察奇偶数判断,送分题 圆周率 代码填空 (满分9分)----...原创 2019-03-15 21:20:34 · 188 阅读 · 0 评论 -
【蓝桥杯】2014年第五届蓝桥杯省赛真题-Java语言B组(C++A组)-7(6)-扑克序列
标题:扑克序列A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。请填写出所有符合要求的排列中,字典序最小的那个。例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1”代替。字符间...原创 2019-03-15 21:16:02 · 293 阅读 · 0 评论 -
【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B(C)组-5-有理数类
标题:有理数类有理数就是可以表示为两个整数的比值的数字。一般情况下,我们用近似的小数表示。但有些时候,不允许出现误差,必须用两个整数来表示一个有理数。这时,我们可以建立一个“有理数类”,下面的代码初步实现了这个目标。为了简明,它只提供了加法和乘法运算。class Rational{ private long ra; private long rb; private long g...原创 2019-03-12 20:59:04 · 326 阅读 · 0 评论 -
【蓝桥杯】2013年第四届蓝桥杯大赛个人赛省赛(软件类)真题-Java语言B组(未完待续)
世纪末的星期 结果填空 (满分3分)--------枚举每个世纪末,用Calendar;或者判断闰年,对天数求和,判断是否星期天 马虎的算式 结果填空 (满分6分)--------枚举每个位上的数字,组合判断 振兴中华 结果填空 (满分8分)--------找重复中的变化,找边界,递归 黄金连分数 结果填空 (满分13分)------1...原创 2019-03-12 21:40:54 · 290 阅读 · 0 评论 -
【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B组-6-三部排序
标题:三部排序一般的排序有许多经典算法,如快速排序、希尔排序等。但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。比如,对一个整型数组中的数字进行分类排序:使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!以下的程序实现了该目标。stati...原创 2019-03-12 21:36:02 · 171 阅读 · 0 评论 -
最大子列和问题
给定K个整数组成的序列{ N1, N2, …, NK },“连续子列”被定义为{ Ni, Ni+1, …, Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。...原创 2019-03-27 21:48:46 · 6834 阅读 · 8 评论 -
【蓝桥杯】2017年第八届蓝桥杯省赛真题-Java语言B组-6-最大公共子串
标题:最大公共子串最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少。比如:“abcdkkk” 和 “baabcdadabc”,可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。请分析该解法的思路,并补全划线部分缺失的代码。public class Main{ st...原创 2019-03-23 16:15:41 · 476 阅读 · 0 评论 -
【蓝桥杯】2017年第八届蓝桥杯省赛真题-Java语言B组-5-取数位
标题:取数位求1个整数的第k位数字有很多种方法。以下的方法就是一种。public class Main{ static int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 static int f(int x, int k){ if(len(x)-k==0) return ...原创 2019-03-23 15:59:52 · 331 阅读 · 0 评论 -
【蓝桥杯】2017年第八届蓝桥杯省赛真题-Java语言B组-3-承压计算
标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。金属材料被严格地堆放成金字塔形。 7 5 8 7 8 8 ...原创 2019-03-22 21:27:39 · 382 阅读 · 0 评论 -
【蓝桥杯】2017年第八届蓝桥杯省赛真题-Java语言B组-2-纸牌三角形
标题:纸牌三角形A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。下图就是一种排法(如有对齐问题,参看p1.png)。 A 9 6 4 8 3 7 5 2这样的排法可能会有很多。如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?请你计算并提交该数字。注意:需要提交的是一个整数,不要提...原创 2019-03-22 19:19:48 · 332 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯省赛真题-Java语言B组-8-饮料换购
饮料换购乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。输入:一个整数n,表示开始购买的饮料数量(0<n<10000)输出:一个整数,表示实际得到的饮料数例如:用户输入:100程序应...原创 2019-03-19 11:01:49 · 246 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯省赛真题-Java语言B组-7-牌型种数
牌型种数小明被劫持到X赌城,被迫与其他3人玩牌。 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?请填写该整数,不要填写任何多余的内容或说明文字。分析:可以从自己手里能拿到的13张初始牌型入手,拿到A牌有0、1、2、3、4一共...原创 2019-03-19 10:04:36 · 362 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯省赛真题-Java语言B组-6-加法变乘法
加法变乘法我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如:1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。注意:需要你提交的是一个整数,不要填写任何多...原创 2019-03-18 21:32:48 · 256 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯大赛个人赛省赛(软件类)真题-Java语言B组(未完)
三角形面积 结果填空 (满分3分)------简单,不用编程 立方变自身 结果填空 (满分5分)------简单枚举 三羊献瑞 结果填空 (满分9分)------简单枚举 循环节长度 代码填空 (满分11分)------*有坑 逻辑 九数组分数 代码填空 (满分15分)------全排列 加法变乘法 结果填空 (满分17...原创 2019-03-18 20:20:02 · 332 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯省赛真题-Java语言B组-5-九数组分数
九数组分数1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法?下面的程序实现了该功能,请填写划线部分缺失的代码。public class A{ public static void test(int[] x) { int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3]; int b = x[4]*10000 + x[5]*...原创 2019-03-18 17:37:57 · 293 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯省赛真题-Java语言B组-4-循环节长度
循环节长度两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153…其循环节为[846153] 共有6位。 下面的方法,可以求出循环节的长度。请仔细阅读代码,并填写划线部分缺少的代码。public static int f(int n, int m){ n = n % m; Vector v = new Vecto...原创 2019-03-18 17:03:52 · 272 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯省赛真题-Java语言B组-3-三羊献瑞
三羊献瑞观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞------------------- 三 羊 生 瑞 气(如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。分析:直接枚举…代码实现:public class ...原创 2019-03-18 16:15:24 · 282 阅读 · 0 评论 -
【蓝桥杯】2015年第六届蓝桥杯省赛真题-Java语言B组-2-立方变自身
立方变自身观察下面的现象,某个数字的立方,按位累加仍然等于自身。1^3 = 1 8^3 = 512 5+1+2=817^3 = 4913 4+9+1+3=17...请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?请填写该数字,不要填写任何多余的内容或说明性的文字。分析:枚举计算出某数的立方数,判读立方数按位累加是否仍然等于该数自身。Java代码...原创 2019-03-18 15:59:47 · 289 阅读 · 0 评论 -
【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B组-9-带分数(历届试题 带分数)
标题:带分数100 可以表示为带分数的形式:100 = 3 + 69258 / 714还可以表示为:100 = 82 + 3546 / 197注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有 11 种表示法。题目要求:从标准输入读入一个正整数N (N<1000*1000) 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的...原创 2019-03-17 21:42:41 · 391 阅读 · 0 评论 -
如何用递归实现全排列?(C、Java等)
如果给定一个字符串,如何打印出其全排列呢?1.问题描述:一组字符串的全排列,按照全排列的顺序输出,并且每行结尾无空格。2.输入:输入一个字符串3.输入示例:请输入全排列的字符串: abc4.输出示例: abc acb bac bca cba cab全排列的基本思想是: 把待全排列记录分为两个部分: (1) 第一个记录 ...原创 2019-03-17 20:59:16 · 2335 阅读 · 1 评论 -
【蓝桥杯】2014年第五届蓝桥杯省赛真题-Java语言B(C)组-6-奇怪的分式
标题:奇怪的分式上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:1/4 乘以 8/5小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?请写出所有不同算式的个数(包括题中举例的)。显然,交换分子分母后,例如:4/...原创 2019-03-15 20:02:24 · 419 阅读 · 0 评论 -
【蓝桥杯】2014年第五届蓝桥杯省赛真题-Java语言B组-5-圆周率
标题:圆周率数学发展历史上,圆周率的计算曾有许多有趣甚至是传奇的故事。其中许多方法都涉及无穷级数。图1.png中所示,就是一种用连分数的形式表示的圆周率求法。下面的程序实现了该求解方法。实际上数列的收敛对x的初始值 并不敏感。结果打印出圆周率近似值(保留小数点后4位,并不一定与圆周率真值吻合)。double x = 111; for(int n = 10000; n&gt;=0; n...原创 2019-03-15 19:08:15 · 243 阅读 · 0 评论 -
【LeetCode】136.只出现一次的数字(Java实现)
LeetCode136.只出现一次的数字题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4分析:先找出题目中的重点要求:1、线性时间复杂度:要求...原创 2019-02-27 12:28:41 · 881 阅读 · 0 评论 -
【蓝桥杯】基础练习 特殊回文数(Java实现)
分析:本题的思路与上篇基础练习 回文数的思路差不多,只不过是情况复杂了一些,对各位数字的和有了限制并且有五位数六位数这样的不同位数的情况。方法一,枚举所有的五位六位整数,将它们的个十百千万(十万)位分别分离出来,然后判断是否是否是回文数并且各位数字的和满足输入的数。注意区分五位数、六位数两种情况。方法二,用两重循环分别遍历五位数或六位数各位上的数字,若各位数字的和满足输入的数,则将其乘以该...原创 2019-03-03 17:00:55 · 2208 阅读 · 3 评论 -
【蓝桥杯】基础练习 回文数(Java实现)
分析:本题回文数只需要遍历四位十进制数,方法一,枚举所有的四位整数,将它们的个十百千位分别分离出来,然后判断是否第一位与第四位相同且第二位和第三位相同。方法二,用两重循环分别遍历个位和千位、十位和百位上的数字,将其乘以该位上的权值求值即可。Java代码实现:方法一:public class Main { public static void main(String[] ar...原创 2019-03-03 15:48:57 · 2270 阅读 · 0 评论 -
【蓝桥杯】基础练习 特殊的数字(Java实现)(水仙花数)
分析:只需要枚举所有的三位整数,将它们的三位分别分离出来,然后计算立方和,判断与原数是否相同即可。Java代码实现:方法一:public class Main { public static void main(String[] args) { int g,s,b; for(int i=100;i<1000;i++){ g=i/1%10;//个位数字 s=i/1...原创 2019-03-03 11:55:03 · 653 阅读 · 0 评论