51nod
Dijk4tra
这个作者很懒,什么都没留下…
展开
-
动态规划基础篇之最长公共子序列问题
状态转移方程:dp[i][j] = (a[i-1]==b[j-1] ? dp[i-1][j-1] + 1 : max(dp[i-1][j] , dp[i][j-1])/记录最长公共子序列的长度;另用一个数组c[]根据dp[][]记录的最大子序列的路径从a[]或者b[]中存下属于最长公共子序列中的每个字符,最后再反向输出。题目链接:http://www.51nod.com/Tutorial/...原创 2019-07-25 16:27:50 · 149 阅读 · 0 评论 -
动态规划基础篇之编辑距离问题
题意:将一个字符串S:kitten转变成另一个字符串T:sitting最少需要执行几次操作。可执行插入、删除、替换这三种操作。题解:dp[i][j]表示由字串s1[1..i]转换为字串s2[1,,j]的最小操作数,显然:dp[0][j]=j*cost(delete);dp[i][0]=i*cost(insert);dp[i][j]=min{ dp[i-1][j-1]+cos...原创 2019-07-26 15:16:14 · 212 阅读 · 0 评论 -
动态规划基础篇之最长单增子序列
//思想:1 对于能放入dp[]序列中,直接放过来,dp[]序列长度加一// 2 不能放进的,在dp[]中找到放入 该数不打乱dp[]的位置,用lower_bound()实现// 3 刚开始一般会有疑问,会不会这样处理,会使dp[]长度增大// 答案是不会,因为它是按之前输入顺序放的,前面的数优先放,如果后面的数比前面的小,// 直接更新dp[],// ...原创 2019-07-26 16:53:45 · 151 阅读 · 0 评论 -
1008 N的阶乘模P
输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)例如:n = 10, P = 11,10! = 36288003628800 % 11 = 10输入两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)输出输出N! mod P的结果。输入样例10 11输出样例10两个同余定理:(a+b)...原创 2019-08-15 13:47:41 · 146 阅读 · 0 评论 -
二叉树学习笔记
#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;//节点结构struct treeNode{ int data; treeNode*le...原创 2019-08-15 16:42:45 · 87 阅读 · 0 评论 -
素数幂分解
题目描述:在素数系统中,一个数字n被表示为若干个素数幂的乘积,形如:原创 2019-08-17 16:57:35 · 1860 阅读 · 0 评论 -
DFS全排列算法
#include<iostream>#include<algorithm>using namespace std;int a[10],flag[10],n;void dfs(int step){ if(step==n+1) { for(int i=1;i<=n;i++) cout<<a[i...原创 2019-08-18 14:32:14 · 818 阅读 · 0 评论