02 2017 档案

摘要:目录 1 问题描述 2 解决方案 1 问题描述 问题描述 在年轻的时候,我们故事中的英雄——国王 Copa——他的私人数据并不是完全安全地隐蔽。对他来说是,这不可接受的。因此,他发明了一种密码,好记又难以破解。后来,他才知道这种密码是一个长度为奇数的回文串。 Copa 害怕忘记密码,所以他决定把密码 阅读全文
posted @ 2017-02-28 17:31 舞动的心 阅读(1077) 评论(0) 推荐(1) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 贪心法 1 问题描述 何为Prim算法? 此处引用网友博客中一段介绍(PS:个人感觉网友的这篇博客对于Prim算法讲解的很清楚,本文与之相区别的地方在于具体实现代码的不同,该网友是使用C++实现,而本文是使用Java实现。其他理论讲解可以参考该网友的博客哦, 阅读全文
posted @ 2017-02-27 15:52 舞动的心 阅读(808) 评论(0) 推荐(3) 编辑
摘要:2017年2月20日 星期一规划:1.早起,晨练2.上午看看算法教材3.下午写写算法实现代码4.晚上继续写写代码总结:规划1完成,早上六点半起床,再接再厉;规划2完成;规划3完成,主要完成了二进制幂算法的编码;规划4完成,主要完成了寻找和为定值的多个数问题的编码。 2017年2月21日 星期二规划: 阅读全文
posted @ 2017-02-26 23:13 舞动的心 阅读(155) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 在了解最优二叉查找树之前,我们必须先了解何为二叉查找树? 引用自百度百科一段讲解: 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 二叉排序树或者是一棵空树,或者是具有下列性质的二 阅读全文
posted @ 2017-02-26 22:37 舞动的心 阅读(3783) 评论(0) 推荐(1) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 问题描述 现有如下一个算法: repeat ni times yi := y y := yi+1 end repeat 令n[1]为你需要算加法的第一个数字,n[2]为第二个,...n[N]为第N个数字(N为需要算加法的数字个数), 并令y初始值为0, 阅读全文
posted @ 2017-02-25 14:33 舞动的心 阅读(866) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球、白球、蓝球。这个问题之所以叫荷兰国旗,是因为将红白蓝三色的小球弄成条状物,并有序排列后正好组成荷兰国旗。 2 解决方案 为了方便编码与讨论,用数字0 阅读全文
posted @ 2017-02-24 17:21 舞动的心 阅读(2594) 评论(0) 推荐(2) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 动态规划法 1 问题描述 在n*m格木板中放有一些硬币,每格的硬币数目最多为一个,在木板左上方的一个机器人需要收集尽可能多的硬币并把它们带到右下方的单元格。每一步,机器人可以从当前的位置向右移动一格或向下移动一格。当机器人遇到一个有硬币的单元格时,就会将这枚 阅读全文
posted @ 2017-02-24 15:29 舞动的心 阅读(2675) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 一头一尾指针往中间扫描法 2.2 一前一后两个指针同时往后扫描法 1 问题描述 给定一个整数数组,请调整 数组中数的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。 2 解决方案 2.1 一头一尾指针往中间扫描法 阅读全文
posted @ 2017-02-23 14:57 舞动的心 阅读(1010) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 动态规划法 1 问题描述 现需找零金额为n,则最少需要用多少面值为d1 < d2 < d3 < ... < dm的硬币?(PS:假设这m种面值d1 < d2 < d3 < ... < dm的硬币,其中d1 = 1,且每种硬币数量无限可得) 2 解决方案 2. 阅读全文
posted @ 2017-02-23 11:39 舞动的心 阅读(3569) 评论(0) 推荐(1) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为: 要求:(1)定义一个结构体类型来描述复数。 (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。 (3)必须使用结构体指针的方法把函数的计算结果返回。 说明:用户输入:运算符号 阅读全文
posted @ 2017-02-22 22:11 舞动的心 阅读(2169) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 递归法 2.2 迭代法 1 问题描述 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。 2 解决方案 2.1 递归法 如果整个台阶只有1级,则显然只有一种跳法。如果台阶有2级,则有两种跳法:一种是分两次跳,每次跳1级;另一种是一次跳 阅读全文
posted @ 2017-02-22 20:05 舞动的心 阅读(3029) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 动态规划法 1 问题描述 给定一排n个硬币,其面值均为正整数c1,c2,...,cn,这些整数并不一定两两不同。请问如何选择硬币,使得在其原始位置互不相邻的条件下,所选硬币的总金额最大。 2 解决方案 2.1 动态规划法 本文所写代码思想参考自《算法设计与分 阅读全文
posted @ 2017-02-22 13:20 舞动的心 阅读(2998) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。 输入格式 输入一行,包含一个表达式。 输出格式 输出这个表达式的值。 样例输入 1-2+3*(4-5) 样例输出 -4 数据规模和约定 表达式长度不超过100,表达式运 阅读全文
posted @ 2017-02-22 08:25 舞动的心 阅读(3366) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力枚举法 2.2 动态规划法 1 问题描述 给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如,如果输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子 阅读全文
posted @ 2017-02-21 18:31 舞动的心 阅读(2079) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 何为最小公倍数?能同时被数字m和数字n整除的最小整数。例如,24和60的最小公倍数等于120。下面请编写相关函数实现求取数字m和n的最小公倍数。 2 解决方案 关于本文求解最小公倍数的思想,来自于《算法设计与分析基础》第三版上一段讲解,具体如下: 具体 阅读全文
posted @ 2017-02-21 12:51 舞动的心 阅读(7670) 评论(0) 推荐(1) 编辑
摘要:2017年2月13日 星期一规划:1.早起,晨练2.上午看看面试书籍和算法3.下午写具体算法实现代码4.晚上写写代码总结:规划1未完成,早上八点起床,昨晚心情变动较大;规划2完成;规划3完成,主要写了一下利用减治法实现1~n的全排 列问题;规划4完成,主要写了一些字符串的全排列问题实现代 码。 20 阅读全文
posted @ 2017-02-20 22:31 舞动的心 阅读(143) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来。 2 解决方案 上述问题是典型的背包问题的应用,即先找出n个数的所有组合,再在这些组合中寻找组合数相加之和等于sum的组合, 阅读全文
posted @ 2017-02-20 21:15 舞动的心 阅读(2632) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 从左至右二进制幂 2.2 从右至左二进制幂 1 问题描述 使用n的二进制表示,计算a的n次方。 2 解决方案 2.1 从左至右二进制幂 此方法计算a的n次方具体思想,引用《算法设计与分析基础》第三版一段文字介绍: 具体代码如下: 运行结果: 2.2 从右至左 阅读全文
posted @ 2017-02-20 15:06 舞动的心 阅读(1439) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。 阅读全文
posted @ 2017-02-19 22:18 舞动的心 阅读(639) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 80分解法 2.2 网友标答解法 1 问题描述 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式 输入一行,包含一个正整数n。 输出格式 按 阅读全文
posted @ 2017-02-19 20:56 舞动的心 阅读(1011) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 排序夹逼法 1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数。如果有多对数的和等于输入的整数,输出任意一对即可。例如,如果输入数组[1,2,4,5,7,11,15]和整数15,那么由于4+11 = 15,因此输出 阅读全文
posted @ 2017-02-19 19:49 舞动的心 阅读(864) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 检验数组中元素的唯一性 2.2 模式计算 1 问题描述 在计算机科学中,预排序是一种很古老的思想。实际上,对于排序算法的兴趣很大程度上是因为这样一个事实:如果列表是有序的,许多关于列表的问题更容易求解。显然,对于包含了排序操作,这种算法的时间效率依赖于所选用 阅读全文
posted @ 2017-02-19 15:40 舞动的心 阅读(2480) 评论(0) 推荐(2) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 全部排序法 2.2 部分排序法 2.3 用堆代替数组法 2.4线性选择算法 1 问题描述 有n个整数,请找出其中最小的k个数,要求时间复杂度尽可能低。 2 解决方案 2.1 全部排序法 先对这n个整数进行快速排序,在依次输出前k个数。 具体代码如下: 运行结 阅读全文
posted @ 2017-02-18 20:48 舞动的心 阅读(670) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力法 1 问题描述 计算两个大整数相乘的结果。 2 解决方案 2.1 蛮力法 运算结果: 阅读全文
posted @ 2017-02-18 15:05 舞动的心 阅读(849) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 注意问题 2.2 具体实现代码 1 问题描述 具体问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每 阅读全文
posted @ 2017-02-16 23:03 舞动的心 阅读(1794) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 中心扩展法 2.2 Manacher算法 1 问题描述 给定一个字符串,求它的最长回文子串的长度。 2 解决方案 2.1 中心扩展法 此处,首先枚举出回文串的中心位置,然后,再在该位置上分别向左和向右扩展,记录并更新得到的最长回文串的长度。 具体代码如下: 阅读全文
posted @ 2017-02-16 20:06 舞动的心 阅读(1915) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 计算中值问题 2.2 选择问题 1 问题描述 中值问题是求一个n个数列表中某一数组下标k,它要求该下标元素比列表中的一半元素大,又比另一半元素小,这个中间的值被称为中值。 选择问题是求一个n个数列表的第k个最小元素的问题。 2 解决方案 2.1 计算中值问题 阅读全文
posted @ 2017-02-16 11:17 舞动的心 阅读(2714) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 给定一个字符串,如何判断这个字符串是否是回文串? 所谓回文串,是指正读和反读都一样的字符串,如madam、我爱我等。 2 解决方案 解决上述问题,有两种方法可供参考: (1)从字符串两头往中间扫; (2)从字符串中间往两头扫。 具体代码如下: 运行结果 阅读全文
posted @ 2017-02-15 19:05 舞动的心 阅读(2556) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 1 问题描述 引用自《算法设计与分析基础》第三版: 约瑟夫斯问题,是以弗拉瓦斯。约瑟夫斯(Flavius Josephus)的名字命名的。约瑟夫斯是一个著名的犹太历史学家,参加并记录了公元66—70年犹太人反抗罗马的起义。约瑟夫斯作为一个将军,设法守住了裘达伯特的堡 阅读全文
posted @ 2017-02-15 16:19 舞动的心 阅读(1977) 评论(0) 推荐(0) 编辑
摘要:1 问题描述 输入一个由数字组成的字符串,请把它转换成整数并输出。例如,输入字符串“123”,输出整数123。 请写出一个函数实现该功能,不能使用库函数。 2 解决方案 解答本问题的基本思路:从左至右扫描字符串中的每个字符,把之前扫描得到的数字乘以10,再加上当前字符表示的数字。 但是,基本思路是这 阅读全文
posted @ 2017-02-14 22:38 舞动的心 阅读(1823) 评论(0) 推荐(0) 编辑
摘要:1 问题描述 首先,了解一下何为俄式乘法?此处,借用《算法设计与分析基础》第三版上一段文字介绍: 2 解决方案 具体编码如下: 运行结果: 阅读全文
posted @ 2017-02-14 18:49 舞动的心 阅读(1770) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 递归法 2.2 迭代法 1 问题描述 首先,了解一下何为折半查找?此处,借用《算法设计与分析基础》第三版上一段文字介绍: 2 解决方案 2.1 递归法 具体代码如下: 运行结果: 2.2 迭代法 具体代码如下: 运行结果: 阅读全文
posted @ 2017-02-14 16:37 舞动的心 阅读(410) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 递归实现 2.2 字典序排列实现 1 问题描述 输入一个字符串,打印出该字符串的所有排列。例如,输入字符串”abc”,则输出有字符’a’,’b’,’c’所能排列出来的所有字符串”abc”,”acb”,”bac”,”bca”,”cab”,”cba”。 2 解决 阅读全文
posted @ 2017-02-13 20:59 舞动的心 阅读(9443) 评论(3) 推荐(4) 编辑
摘要:2017年2月6日 星期一规划:1.上午去学校2.下午把宿舍收拾整理一下3.晚上写写算法题总结:规划1完成,下午两点到达学校;规划2完成;规划3完成,主要完成了旅行商问题的蛮力法编码。 2017年2月7日 星期二规划:1.早起,晨练2.上午看看面试书籍及数据结构3.下午看看算法4.晚上写写代码总结: 阅读全文
posted @ 2017-02-12 22:20 舞动的心 阅读(134) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力轮询法 2.2 素数相乘法 2.3 位运算法 1 问题描述 给定一长字符串A和一短字符串B。请问,如何最快地判断出短字符串B中的所有字符是否都在长字符串A中?请编写一个判断函数实现此功能。 为简单起见,假设输入的字符串只包含小写英文字母。下面举几个例子。 阅读全文
posted @ 2017-02-12 18:52 舞动的心 阅读(868) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 基于减治法实现 2.2 基于深度优先查找实现 1 问题描述 给定一个有向图,求取此图的拓扑排序序列。 那么,何为拓扑排序? 定义:将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边uv,在最后的排序结果中,顶点u总是在顶点v的前面。 阅读全文
posted @ 2017-02-11 16:44 舞动的心 阅读(3473) 评论(2) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力移位 2.2 三步反转 1 问题描述 给定一个字符串,要求将字符串前面的若干个字符移到字符串的尾部。例如,将字符串“abcdef”的前3个字符‘a’、‘b’和‘c’移到字符串的尾部,那么原字符串将变成“defabc”。请写一个函数实现此功能。 2 解决方 阅读全文
posted @ 2017-02-09 20:19 舞动的心 阅读(735) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力法 1 问题描述 广度优先查找(Breadth-first Search,BFS)按照一种同心圆的方式,首先访问所有和初始顶点邻接的顶点,然后是离它两条边的所有未访问顶点,以此类推,直到所有与初始顶点同在一个连通分量中的顶点都被访问过了为止。如果仍然存在 阅读全文
posted @ 2017-02-09 15:44 舞动的心 阅读(1713) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力法 1 问题描述 深度优先查找(depth-first search,DFS)可以从任意顶点开始访问图的顶点,然后把该顶点标记为已访问。在每次迭代的时候,该算法紧接着处理与当前顶点邻接的未访问顶点。这个过程一直持续,直到遇到一个终点——该顶点的所有邻接顶 阅读全文
posted @ 2017-02-08 19:04 舞动的心 阅读(3966) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 减治法 2.2.1 递归求解 2.2.2 非递归求解(运用异或运算) 2.3 动态规划法 1 问题描述 给定n个重量为w1,w2,w3,...,wn,价值为v1,v2,...,vn的物品和一个承重为W的背包,求这些物品中最有价值的子集(PS: 阅读全文
posted @ 2017-02-07 15:59 舞动的心 阅读(9402) 评论(0) 推荐(1) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 减治法 2.2.1 Johson-Trotter算法 2.2.2 基于字典序的算法 1 问题描述 何为旅行商问题?按照非专业的说法,这个问题要求找出一条n个给定的城市间的最短路径,使我们在回到触发的城市之前,对每个城市都只访问一次。这样该问题 阅读全文
posted @ 2017-02-06 18:52 舞动的心 阅读(3865) 评论(0) 推荐(1) 编辑
摘要:2017年1月30日 星期一大年初三,拜年中... 2017年1月31日 星期二大年初四,拜年中... 2017年2月1日 星期三规划:1.早起,晨练2.上午在家看看面试书籍3.下午完成一篇设计模式的示例编码4.晚上争取完成旅行商问题的蛮力算法总结:规划1完成,早上七点十分起床,还待加油;规划2完成 阅读全文
posted @ 2017-02-05 20:57 舞动的心 阅读(142) 评论(0) 推荐(0) 编辑
摘要:目录 1 问题描述 2 解决方案 2.1 问题化简 2.2 定位输出测试 2.3 回顾总结 1 问题描述 最近两天在思考如何使用蛮力法解决旅行商问题(此问题,说白了就是如何求解n个不同字母的所有不同排序的序列问题,即共有n!次不同排序)。 为此,我认真看了一篇出自CSDN上的博客文章,其中有一段核心 阅读全文
posted @ 2017-02-05 19:59 舞动的心 阅读(3073) 评论(0) 推荐(0) 编辑