算法
文章平均质量分 69
不是比较可爱的人
这个作者很懒,什么都没留下…
展开
-
走方格的方案数-- 递归和动态规划
描述 请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。 本题含有多组样例输入。 输入描述: 每组样例输入两个正整数n和m,用空格隔开。(1≤n,m≤8) 输出描述: 每组样例输出一行结果 动态规划 1.Dynamic programming,build route_array-like Yanghui_triangle,time complexity less tha转载 2021-08-16 01:44:21 · 553 阅读 · 0 评论 -
HJ89 24点运算 java
问题描述:给出4个[0,13]的数值,经过任意加减乘除后得到24. 思路: 假设四个数为a1,a2,a3,a4,其中四个符号为t1,t2,t3,t4。 我们先计算(a1 t1 a2)的得到计算结果a12,再让a12与a3进行t2运算。其余同理。这样我们就得到了一个计算公式: (((a1 t1 a2) t2 a3 )t3 a4) 而a1,a2,a3,a4不确定,我们需要得到4个数字的所有可能出现情况,即数字的排列组合。 1. 总体流程图如下: 2. 得到数据排列组合列表 priv..转载 2021-08-15 22:24:03 · 390 阅读 · 0 评论 -
HJ71 字符串通配符-- 包含动态规划、递归、字符串通配符三种方法
带有通配符的字符串匹配 一、Leetcode | 44 Wildcard Matching(只有一个字符串包含通配符) 题目很简单,就是说两个字符串,一个含有通配符,去匹配另一个字符串;输出两个字符串是否一致。 注意:’?’表示匹配任意一个字符,’*’表示匹配任意字符0或者多次 首先,我们想到暴力破解。如果从头到尾的破解,到第二个字符时,是否匹配成功取决于第一个字符是否匹配成功! 所以我们想到应该要用到动态规划; 既然用到动态规划,最重要的是设置初值 和找到递推式: 于是,我们开始分析初值怎么设转载 2021-08-15 16:44:05 · 683 阅读 · 0 评论 -
杨辉三角的变形
/** * 杨辉三角的变形 考点:找规律 * 杨辉三角: * 第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。 注意:每一行的规律,每一行有2 * i - 1个数,中间的数位于第i个位置 * 从第1行开始(而不采用第0行)方便后面的计算 描述 求第n行第一个偶数出现的位置。如果没有偶数,则输出...原创 2021-08-14 23:29:16 · 305 阅读 · 0 评论 -
计算字符串编辑距离--动态规划
描述 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。 许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。 /* * 动态规划思路为: * 设Ai为字符串A(a1a2a3 … am)的前i个字符(即为a1,a2,a3 … ai) ...原创 2021-08-14 22:17:16 · 140 阅读 · 0 评论 -
中心扩散法---最长回文子串
什么是中心扩散法? 中心扩散法,顾名思义就是以某一个位置为中心,向周围扩散,直到满足条件或到达边界。 Leetcode 5.最长回文子串 题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。 示例 1:输入: "babad",输出: "bab",注意: "aba" 也是一个有效答案。 示例 2:输入: "cbbd",输出: "bb" 解题思路:遍历s,以每个char以及两个char中点为中心,计算以此点为中心的最长回文串; 例如: 字符串abc.转载 2021-08-13 23:35:09 · 379 阅读 · 0 评论 -
java四则运算
/* 使用两个栈,一个数字栈,一个符号栈 从左往右遍历表达式字符串 1.遇到数字,直接压入数字栈 2.遇到符号 (1)遇到左括号,直接入符号栈 (2)遇到右括号,”符号栈弹栈取栈顶符号b,数字栈弹栈取栈顶数字a1,数字栈弹栈取栈顶数字a2,计算a2 b a1 ,将结果压入数字栈”,重复引号步骤至取栈顶为左括号,将左括号弹出 3.遇到运算符, 1)若该运算符的优先级大于栈顶元素的优先级,直接入符号栈。 2)若小于,”符号栈弹栈取栈顶符号b,数字栈弹栈取栈顶数字a1,数字栈弹栈取栈顶数字a2,计算a2 ...转载 2021-07-28 16:54:44 · 456 阅读 · 1 评论 -
匈牙利算法(Hungarian algorithm)
匈牙利算法主要用于解决一些与二分图匹配有关的问题,所以我们先来了解一下二分图。 二分图(Bipartite graph)是一类特殊的图,它可以被划分为两个部分,每个部分内的点互不相连。下图是典型的二分图。 一张二分图 可以看到,在上面的二分图中,每条边的端点都分别处于点集X和Y中。匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。 这么说起来过于抽象了,我们现在从实际问题出发。 最大匹配问题 看完上面讲的,相信读者会觉得云里雾里的:这是啥?这有啥用?所以我们把这张二分图稍微转载 2021-07-28 20:06:37 · 1889 阅读 · 0 评论