算法
java算法
Gatzbye
这个作者很懒,什么都没留下…
展开
-
算法笔记
算法笔记:动态规划:解决的问题:最优子结构,子问题最优性求最优解的问题重叠子问题形式:记忆型递归递推核心:找到状态转移的方式,写出dp方程。贪心算法:解决的问题:最优子结构,子问题最优性求最优解问题是动态规划的特例核心:找到贪心的策略——一般是对某一属性进行排序...原创 2020-04-14 11:51:42 · 127 阅读 · 0 评论 -
水洼数目(dfs)
水洼数目题目:有一个大小为 N*M 的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的。的部分)。。。。W。。。。限制条件N, M ≤ 100样例:输入N=10, M=12园子如下图('W’表示积水, '.'表示没有积水)W…WW..WWW…WWW…WW…WW.…WW.…W……W…W…....原创 2020-04-09 16:24:35 · 986 阅读 · 0 评论 -
数独(Dfs)
数独题目:你一定听说过“数独”游戏。如下图所示,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。数独的答案都是唯一的,所以,多个解也称为无解。本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。本题的要求就是输入数独题目,程序输出数独的唯一解。我们...原创 2020-04-08 17:17:53 · 303 阅读 · 0 评论 -
子集生成(递归+set集合的使用)
子集生成题目:请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序知识点:Set<Set<Character>> res = new HashSet<>(); res.add(new H...原创 2020-04-07 10:16:24 · 336 阅读 · 0 评论 -
合法括号(递归/迭代)
合法括号输出合法的括号组合输入括号对数输出所有合法组合输入:3输出:()()(),((())),(()()),()(()),(())(),2.判断一个字符串是否合法知识点:Set s_n = new HashSet<>();——HashSet简单的理解就是HashSet对象中不能存储相同的数据,存储数据时是无序的。但是HashSet存储元素的顺序并不是按照...原创 2020-04-06 23:11:30 · 299 阅读 · 0 评论 -
硬币表示给定面值
硬币表示给定面值 /*递归形式*/ public int countWays(int n) { if (n <= 0) return 0; return countWaysCore(n, new int[]{1, 5, 10, 25}, 3); } private int countWaysCore(int n, int[] coins, int c...原创 2020-04-06 22:32:06 · 166 阅读 · 0 评论 -
最长滑雪道(递归)
最长滑雪道题目:小袁非常喜欢滑雪, 因为滑雪很刺激。为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。 小袁想知道在某个区域中最长的一个滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。如下:一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23...原创 2020-04-03 11:05:29 · 744 阅读 · 0 评论 -
求矩阵乘法及行列式的值
n阶行列式计算方法:将大矩阵不断分解为小矩阵来缩小其规模,最后逐层返回答案。java实现import java.util.Scanner;class Main { public static void main(String []args) { Scanner sc=new Scanner(System.in); //String s=sc...原创 2020-04-01 12:40:16 · 1782 阅读 · 0 评论 -
最长同值路径
分析二叉树:一个节点只有两个子节点,左和右。路径:节点与节点之间的连线就是一条路径同值路径:节点和与子节点或者父节点之间的值相同,那么这就是一条同值路径,本题求的就是这个最大值。边数:可以理解为题目示例中连接节点的直线。这一类问题,需要用递归的方法解决。在二叉树中,只能从根节点向下递归调用,可以通过root.left和root.right的方法得到两个子节点的Tree...原创 2020-04-01 11:19:39 · 130 阅读 · 0 评论 -
位运算解题
位运算解题位运算小技巧判断奇偶数;获取某位二进制位是1还是0;交换两个整数变量的值; a = a ^ b; // 以a为临时变量 b = a ^ b; // b=a^b => b=(a^b)^b => a^(b^b) => a a = a ^ b; // a=a^b => a=a^(a^b) => (a^a)^b => b...原创 2020-03-12 16:32:58 · 119 阅读 · 0 评论 -
大数取模&大数开平方
大数取模蓝桥杯中经常会让运算结果对某一个很大的数取模作为最终结果。而往往运算结果本身就是一个十分巨大的数。这时不能把运算结果直接对这个很大的数取模。实际上运算结果在程序中是多次加法得到的,只需要在每次得到部分结果时就对其进行取模运算。再相加就得到最终结果。例如:27/7=3...6 (27=17+10)17/7=2...310/7=1...3可见,3=(2+1);6=(3+3)...原创 2020-03-10 12:35:03 · 1091 阅读 · 0 评论 -
矩阵翻硬币(大数开平方)
矩阵翻硬币问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵。随后,小明对每一个硬币分别进行一次 Q 操作。对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转。其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。小明想知道最开始有多少枚硬币是反面朝上...原创 2020-03-10 12:31:10 · 210 阅读 · 0 评论 -
地宫取宝(深搜,记忆型递归)
地宫取宝X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。请你帮小明算一算...原创 2020-03-08 12:24:58 · 245 阅读 · 0 评论 -
常用的自编函数及算法技巧
编程的快捷工具最大公约数:辗转相除法公式:gcd(a,b) = gcd(b,a mod b)。static int gcd(int a,int b) { if(b==0) return a; return gcd(b,a%b); } //辗转相除法原创 2020-03-07 11:18:47 · 239 阅读 · 0 评论 -
高精度计算
什么是高精度计算?实际上高精度就是说参与运算的数据和运算结果的范围,超出标准数据类型能表示的数据大小范围的运算。这个时候,如果要得到正确的计算结果,显然不能依靠普通方法实现了。而要在普通运算原理的基础上,加以辅助算法来实现超大数据的计算。例如:求两个100位的数据的和,或者计算两个100位的数字乘积。这时就要用到高精度算法了。参考博文:高精度计算详解高精度计算...原创 2020-02-09 17:38:09 · 242 阅读 · 0 评论 -
最佳加法表达式(动态规划)
最佳加法表达式总时间限制:1000ms内存限制:65536kB描述给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值。例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36输入有不超过15组数据每组数据两行。第一行是整数m,表示有m个加号要放( 0<=m<=50)第二行是若干个数字。数字总数...转载 2020-02-09 17:29:11 · 564 阅读 · 0 评论 -
最长公共子序列(动态规划)
一,问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA二,算法求解这是一个动态规划的题目。对于可用动态规划求解的问题,一般有两个特征:①最优子结构;②重叠子问题①最优子结构设 X=(x1,x2,…xn) 和 Y...转载 2020-02-09 17:01:03 · 485 阅读 · 0 评论 -
二分算法及分治算法思路
二分算法思想利用while循环不停的缩小查找范围,须设置退出循环的条件(查找成功/查找失败)。二分算法用于在一段连续的数字段中查找某数(某问题的最优解/)),一般用数组存储待处理的数据,在使用二分算法前,数据必须是有序的。分治算法思想1.分治算法也要用到递归的思想,即将一个大的问题通过递归不断缩小问题的规模。要注意问题的最小规模时的情形,这时一般时递归函数的出口,同时也要搞清楚对最小规...原创 2020-02-04 14:50:27 · 579 阅读 · 0 评论