经典算法
皮蛋瘦肉没有肉
红灯需硬闯,马路要横穿
展开
-
蓝桥杯真题——黄金分割数
题目: 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!!言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。原创 2017-03-04 18:40:18 · 1246 阅读 · 0 评论 -
动态规划——最大公共子串
题目有两个字符串str和str2,求出两个字符串中最长公共子串长度。比如:str=acbcbcef,str2=abcbced,则str和str2的最长公共子串为bcbce,最长公共子串长度为5。思路动态规划转移方程:代码:#include<iostream>#include<string>#include<cmath>us...原创 2019-01-16 16:20:46 · 414 阅读 · 0 评论 -
笔记——二叉树遍历
题目输入一棵二叉树,输出树的前、中、后序遍历结果。输入一个整数N(N<= 10000),表示树中有N个结点(编号0~N-1)。接下来N行,依次为结点0~结点N-1的左右孩子情况。每行3个整数,F,L,R。L,R为F的左右孩子。L,R如果为-1表示该位置上没有孩子。分三行分别输出树的前中后序遍历。同一行中的数字,用一个空格间隔。输入样例50 3 11 2...原创 2019-01-15 19:48:29 · 327 阅读 · 1 评论 -
动态规划——编辑距离
参考博客:https://blog.csdn.net/ghsau/article/details/78903076题目编辑距离又称Leveinshtein距离,是由俄罗斯科学家Vladimir Levenshtein在1965年提出。编辑距离是计算两个文本相似度的算法之一,以字符串为例,字符串a和字符串b的编辑距离是将a转换成b的最小操作次数,这里的操作包括三种: 插入一个字...原创 2019-01-15 16:05:46 · 517 阅读 · 1 评论 -
大整数运算(三)(PAT)A1024.Palindromic Number
题目描述:A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic ...原创 2019-01-25 17:00:59 · 390 阅读 · 3 评论 -
大整数运算(二)(PAT)A1023.Have Fun with Numbers
题目描述:Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit num...原创 2019-01-25 16:48:52 · 292 阅读 · 0 评论 -
大整数运算(一)(PAT)B1017 A除以B
题目描述:本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。代码:我的解题模板#include<string>#include<cstdio>/*************模板部分*************/struct bign{ int d[1010]; in...原创 2019-01-25 16:35:39 · 316 阅读 · 0 评论 -
笔记——大整数运算模板
#include<cstring>#include<cstdio>struct bign{//大整数 int d[1000];//这里数组长度可以更改,取决于题目中最大整数长度 int len; bign(){ memset(d,0,sizeof(d)); len=0; }};bign change(char str[...原创 2019-01-25 16:24:12 · 255 阅读 · 0 评论 -
动态规划——最长公共子序列
题目给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA思路参考这篇博客https://blog.csdn.net/hrn1216/article/details/51534607 代码如下:#i...原创 2019-01-15 15:14:23 · 407 阅读 · 1 评论 -
动态规划——最大递增子序列
题目给定数组arr,返回arr最长递增子序列长度。比如arr=[2,1,5,3,6,4,8,9,7],最长递增子序列为[1,3,4,8,9],所以返回5思路生成与arr长度相等的dp,dp[i]表示在必须以arr[i]这个数结尾的情况下,arr[0..i]中的最大递增子序列长度。arr: 2 1 5 3 6 4 8 9 7dp: 1 1 2 2 3 3 4 5 4转移方程求...原创 2019-01-14 15:17:29 · 688 阅读 · 0 评论 -
动态规划——矩阵问题
题目给定一个矩阵arr,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有数字累加起来就是路径和,返回所有路径中最小路径和,如果给定的arr如大家看到的样子,路径1,3,1,0,6,1,0就是路径中和最小的,所以返回12。//矩阵arr1 3 5 98 1 3 45 0 6 18 8 4 0 思路生成大小和arr一样的矩阵dp,dp[i][j]的值表示从...原创 2019-01-14 14:18:39 · 1458 阅读 · 0 评论 -
动态规划——剪绳子
题目给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少?思路1.把一个母问题分解成若干个子问题假设绳子长为10,我们可以分解成这么几组:1+9,2+8,3+7,4+6,5+5然后每一组又可以细分为更小的子问题。2.得出转移方程v...原创 2019-01-13 17:17:47 · 284 阅读 · 0 评论 -
动态规划——买书问题
题目 有一书店引进了一套书,共有3卷,每卷书定价是60元,书店为了搞促销,推出一个活动,活动如下: 如果单独购买其中一卷,那么可以打9.5折。 如果同时购买两卷不同的,那么可以打9折。 如果同时购买三卷不同的,那么可以打8.5折。 如果小明希望购买第1卷x本,第2卷y本,第3卷z本,那么至少需要多少钱...原创 2019-01-13 15:18:28 · 591 阅读 · 0 评论 -
蓝桥杯——排列组合问题
题目:有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为 36 * 495 = 396 * 45 = 17820类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)原创 2017-03-12 15:19:30 · 927 阅读 · 0 评论 -
蓝桥杯真题 ——地宫取宝(java)
标题:地宫取宝 X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。 当小明走到出口时,原创 2017-03-20 18:57:54 · 622 阅读 · 0 评论 -
浅析java中BigDecimal大数值类的使用
BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。可以处理任意长度的浮点数运算。 BigDecimal的实现利用到了BigInteger,转载 2017-03-05 10:43:53 · 14101 阅读 · 0 评论 -
蓝桥杯——舍罕王赏麦子
题目:你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有64格)。国王以为他只是想要一袋麦子而已,哈哈大笑。当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都原创 2017-03-05 10:16:46 · 2614 阅读 · 0 评论 -
递归算法——汉诺塔问题
题目: 有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动?解答过程:import java.util.Scanner;public class 汉诺塔 { static long count; static void原创 2017-03-04 18:57:09 · 633 阅读 · 0 评论 -
笔记——动态规划字符串类题目小结
题目1:最大递增子序列 我的代码给定数组arr,返回arr最长递增子序列长度。比如arr=[2,1,5,3,6,4,8,9,7],最长递增子序列为[1,3,4,8,9],所以返回5题目2:最长公共子序列 我的代码给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这...原创 2019-01-16 16:55:26 · 532 阅读 · 5 评论