
算法
ECNU_Jiang
自2020年11月12日起,开始设置leetcode专题
展开
-
动态规划-钢条切割
动态规划 简介 目的:求解最优解问题; 思想:组合子问题的解来求解原问题; 一. 可以解决哪些问题: 1. 问题的目标是求解一个问题的最优解; 2. 整体问题的最优解依赖于各个子问题的最优解; 3. 大问题分解成若干小问题,且这些小问题还可能继续分解为若干更小的问题; 4. 从上向下分析问题,从下向上解决问题。 二. 设计动态规划的方法: 刻画一个最优解结构特征: 即要求满足题目要求的解的特征;...原创 2019-01-11 15:53:43 · 1351 阅读 · 0 评论 -
动态规划-最长公共子序列
最长公共子序列 问题描述 概念解释 子序列:给定一个序列X=&lt;x1,x2,...,xm&gt;X=&lt;x_{1},x_{2},...,x_{m}&gt;X=<x1,x2,...,xm>,另一个序列Z=&lt;z1,z2,...,zk&gt;Z=&lt;z_{1},z_{2},...,z_{k}&gt;Z...原创 2019-01-19 15:01:56 · 297 阅读 · 0 评论 -
动态规划-矩阵链乘法
动态规划-矩阵链乘法 采用动态规划的方式求解矩阵链乘法问题 问题描述 给定一个n个矩阵的序列(矩阵链&lt;A1,A2,...,AnA_{1},A_{2},...,A_{n}A1,A2,...,An&gt;),希望计算其乘积 A1A2...AnA_{1}A_{2}...A_{n}A1A2...An-------------------------------------------...原创 2019-01-14 17:25:00 · 907 阅读 · 0 评论 -
动态规划原理
动态规划原理及重构最优解原理 最优子结构 运用动态规划求解最优化问题第一步 若一个问题的最优解中包含其子问题的最优解,则此问题具有最优解的结构性质。因为使用子问题的最优解构造原问题最优解,所以我们必须确保考察了最优解中用到的所有子问题。 如何发掘最优子结构性质 证明问题最优解的第一个组成部分是做出一个选择。例如切割钢条的第一次切割位置。做出该选择后,将会产生一个或者多个待解的子问题。 对...原创 2019-01-16 12:31:23 · 452 阅读 · 0 评论 -
动态规划-整数拆分/完全背包方案数
题目描述 一个整数总可以拆分为2的幂的和,例如: 7=1+2+4 7=1+2+2+2 7=1+1+1+4 7=1+1+1+2+2 7=1+1+1+1+1+2 7=1+1+1+1+1+1+1 总共有六种不同的拆分方式。 再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。 用f(n)表示n的不同拆分的种数,例如f(7)=6. 要求编写程序,读入n...原创 2019-01-22 14:36:29 · 1750 阅读 · 0 评论 -
递归入门-全排列问题到n皇后问题
全排列 问题描述 输入正整数n,输出所有由1-n数字组成的数列,例如,当n=3时,全排列有:&amp;lt;1,2,3&amp;gt;,&amp;lt;1,3,2&amp;gt;,&amp;lt;2,1,3&amp;gt;,&amp;lt;2,3,1&amp;gt;,&amp;lt;3,1,2&amp;gt;,&amp;lt;3,原创 2019-02-15 11:56:45 · 463 阅读 · 1 评论 -
初步递归-神奇的口袋
递归-神奇的口袋 题目描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。 输入 输入的第一行是正整数n (1 &...原创 2019-02-21 16:43:13 · 350 阅读 · 0 评论 -
数据结构-图论-单源最短路径-Dijkstra算法
Dijkstra算法 简单介绍 首先,我们要对单源最短路径有个基本的认识,这是前提条件; 给出简单的介绍: Dijkstra算法的实现方法 算法思想 找到起点到各个未访问过的顶点(包括自身)的距离最小的点u并访问顶点u;(起初,设置起点到其余各个顶点的距离为无穷大,到自身的距离为0) 遍历未访问过的结点v,查看经过结点u是否可以使起点到结点v距离变小,如果可以,则更新起点到结点v的最小距离...原创 2019-03-01 10:50:33 · 941 阅读 · 0 评论 -
数学问题-欧几里得算法扩展
欧几里得算法-计算a,b最大公约数 计算方法 1.当b≠0时:a=b,b=a%b; 2.当b=0时,最大公约数为a; 算法 int gcd(int a,int b){ return !b?a:gcd(b,a%b); } 扩展-计算ax+by=gcd(a,b) 方法(其中a,b是在不断变化的) 首先计算出gcd=gcd(a,b); ax1+by1=gcdax_{1}+by_{1}=gcdax1...原创 2019-02-26 15:19:56 · 267 阅读 · 0 评论