算法
KeepThinking_
这个作者很懒,什么都没留下…
展开
-
泊松分酒
题目如下:泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。 有一次闲暇时,他提出过一个有趣的问题,后称为:“泊松分酒”。在我国古代也提出过类似问题,遗憾的是没有进行彻底探索,其中流传较多是:“韩信走马分油”问题。 有3个容器,容量分别为12升,8升,5升。其中12升中装满油,另原创 2013-04-03 13:02:12 · 2212 阅读 · 0 评论 -
随笔:设计一个栈结构,使得取出栈中最大值时间复杂度为O(1)
题意:设计一个数据结构,符合栈的特点,即“后进先出”,且加多一个要求,使得取出该栈所有元素最大值的时间复杂度可以控制为O(1)。说个很明显的错误,使用一个辅助变量,保存当前最大值,每次入栈的值都与该最大值比较,大则替换为最大值。这样取出最大值则返回该辅助变量,很显然这个只能实现一次正确返回。总体实现很简单,就是开辟多一个存储最大值索引的栈,该栈和存储数据的栈保持同步,即原创 2013-06-16 20:07:42 · 4059 阅读 · 2 评论 -
顺时针打印数字矩阵
题意:假如有矩阵(二维数组):1 2 3 45 6 7 89 10 11 1212 14 15 16则依次打印出数字:1,2,3,4,8,12,16,15,14,12,9,5,6,7,11,10即顺时针打印。几种需要注意的情况:第一种:1 2 34 5 6结果为:1,2,3,6,5,4第二种:123结果为:原创 2013-06-18 20:44:41 · 1210 阅读 · 0 评论 -
算法笔记-链表
链表结构如下:struct ListNode{int m_nValue;ListNode * m_pNext;};1.输入一个链表,输出该链表中倒数第K个结点。2.求链表的中间结点。如果链表中结点总数为奇数,返回中间结点,如果结点总数是偶数,返回中间两个结点的任意一个。3.判断一个单向链表是否形成了环形结构。(如果是环形结构,则尾结点的下一个结点不一定是原创 2013-06-18 12:37:57 · 1201 阅读 · 0 评论 -
简单经典算法笔记(未完)
1.分解质因子//分解质因子:6=2*3public class IntegerSplitFactor { public static void main(String[] args) { int m=90; System.out.print(m+"="); split(m,0); } //递归思想如下: /* 90 * 2 45 * 3原创 2013-06-20 10:45:17 · 891 阅读 · 0 评论 -
蓝桥杯-买不到的数目
扩展欧几里得算法的一种应用原创 2013-07-07 13:07:06 · 4339 阅读 · 1 评论 -
算法学习篇(未完)
声明:所有题目都是自己曾经做过,也只作了部分测试,一定存在错漏之处,如能帮忙指出,感激不尽。其他题目等整理之后再更新1.求一个数字的二进制表示有多少个1public class CountOfOne { public static void main(String[] args) { //求一个数字的二进制表示有多少个1 int number=-1; print(numb原创 2013-06-20 13:52:55 · 1309 阅读 · 0 评论 -
蓝桥杯-地铁换乘
为解决交通难题,某城市修建了若干条交错的地铁线路,线路名及其所属站名如stations.txt所示。线1苹果园....四惠东线2西直门车公庄....建国门线4....其中第一行数据为地铁线名,接下来是该线的站名。当遇到空行时,本线路站名结束。下一行开始又是一条新线....直到数据结束。如果多条线拥有同一个站名,表明原创 2013-06-25 13:05:29 · 2266 阅读 · 0 评论 -
蓝桥杯-排日程
【编程题】(满分32分) 某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息2天。 上级要求每个人每周的工作日和休息日安排必须是固定的,不能在周间变更。 此外,由于工作需要,还有如下要求: 1. 所有人的连续工作日不能多于3天(注意:周日连到下周一也是连续)。 2. 一周中,至少有3天所有人都是上班的。原创 2013-07-01 13:35:27 · 1993 阅读 · 4 评论 -
求两个DNA的距离-最短编辑距离变形
题意如下:脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子。它由4种主要的脱氧核苷酸(dAMP、dGMP、dCMT和dTMP)通过磷酸二酯键连接而成。这4种核苷酸可以分别记为:A、G、C、T。DNA携带的遗传信息可以用形如:AGGTCGACTCCA.... 的串来表示。DNA在转录复制的过程中可能会发生随机的偏差,这才最终造就了生物的多样性。为了简化问题,我们假设,D原创 2013-06-16 18:12:12 · 3390 阅读 · 0 评论 -
第四届蓝桥杯编程题:带分数
标题:带分数 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。 类似这样的带分数,100 有 11 种表示法。题目要求:从标准输入读入一个正整数N (N程序输出该数字用数码1~9原创 2013-05-19 16:33:22 · 6627 阅读 · 3 评论 -
随笔:蓝桥杯比赛题目-第39级台阶
题目标题: 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案。原创 2013-05-28 14:13:21 · 4763 阅读 · 6 评论 -
找到N个无序数中第M大的数
题目:在一组无序数中找到第M大的数,如一组无序数中:3,2,321 中,找到第2大的数,显然这里可以明显的看出是数字3。解析:这种类型的题有很多种解法,最简单的做法无非是先整体排完序之后直接找第M个数,这种的效率明显是很低的。我这里使用快速排序的思想来解这道题,首先在无序数中随便找一个数作为中间值(我这里用的是第一个数),然后将比中间值大的数移动到中间值左边,比中间值大的数移动到中间值右边原创 2013-04-08 11:00:45 · 2693 阅读 · 0 评论 -
翻手算法
看过编程珠玑的一定对里面用来解决“字符循环左移”的翻手算法印象深刻,这个算法非常容易实现,效率还贼给力!先说一下题意:如现在有一串字符:ABCDEFG,让前两个字符循环左移到整个个字符串的右边,结果即:CDEFGAB在具体讲这种算法之前,先来看看线性代数里的转置。(AB)T等于什么?等于BTAT。那么(ATBT)T等于什么?等于(BT)T(AT)T,即BA。啊哈!我原创 2013-04-08 12:59:51 · 2730 阅读 · 0 评论 -
一组数中最长连续递增子序列个数
题意:有一组数,如,1,2,3,-2,4,6,10,求该组数中最长连续递增子序列的个数,显然这道题的答案是从-2到10一共4个数,所以结果为4.解析:这道题最直观的方法就是用两个嵌套的循环,遍历的过程中,当当前数比上一个数大时,则计数变量加1,否则退出内层循环,将计数变量和当前最大连续递增个数变量比较,当比其大时,重新赋值最大连续递增个数变量。这种方法的时间复杂度显然为O(n^2)。这里我原创 2013-04-08 19:40:39 · 2751 阅读 · 0 评论 -
整数划分
整数划分问题相信很多人都做过,题意是这样的:将正整数n表示成一系列正整数之和,n=n1+n2+,,,,,+nk(其中n1>=n2>=......>=nk>=1,k>1)例如:正整数6有如下11种不同的划分,6=1+1+1+1+1+16=1+1+1+1+26=1+1+1+36=1+1+2+26=1+1+46=1+2+36=1+56=2+2+26=2+4原创 2013-04-10 12:52:03 · 1146 阅读 · 0 评论 -
最短路径问题
题目来源:http://acm.hdu.edu.cn/vcontest/vtl/problem/showproblem/vtlid/4642/problemid/1011java代码如下:public class Shortest {//http://acm.hdu.edu.cn/vcontest/vtl/problem/showproblem/vtlid/4原创 2013-04-10 13:08:50 · 880 阅读 · 0 评论 -
矩阵运算
在编写图形界面软件的时候,经常会遇到处理两个矩形的关系。 如图【1.jpg】所示,矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在(参看【2.jpg】)。两个矩形的并集指的是:能包含这两个矩形的最小矩形,它一定是存在的。本题目的要求就是:由用户输入两个矩形的坐标,程序输出它们的交集和并集矩形。 矩形坐标的输入格式是输入两个对角点坐标,原创 2013-04-20 09:08:36 · 1233 阅读 · 0 评论 -
KMP算法代码(java版)
JAVA代码如下:public class KMP { public static void main(String[] args) { KMP kmp = new KMP(); String target="asfsdfssaaabcadsdfaaaaaaaadsf"; String mode="fsdfss"; boolean result=kmp.mathStrin原创 2013-04-19 15:42:22 · 1297 阅读 · 0 评论 -
循环小数
1/7 = 0.142857142... 是个无限循环小数。任何有理数都可以表示为无限循环小数的形式。本题目要求即是:给出一个数字的循环小数表示法。例如:输入:1,5则输出:0.2输入:1,7则输出:0.[142857]输入:7,6则输出:1.1[6]用户输入的格式是:整数,整数每个整数范围均为:1~100原创 2013-04-20 17:16:05 · 1800 阅读 · 0 评论 -
蓝桥杯-火柴游戏
【编程题】(满分34分) 这是一个纵横火柴棒游戏。如图[1.jpg],在3x4的格子中,游戏的双方轮流放置火柴棒。其规则是: 1. 不能放置在已经放置火柴棒的地方(即只能在空格中放置)。 2. 火柴棒的方向只能是竖直或水平放置。 3. 火柴棒不能与其它格子中的火柴“连通”。所谓连通是指两根火柴棒可以连成一条直线,且中间没有其它不同原创 2013-07-01 20:08:17 · 1668 阅读 · 0 评论