终于开始DP了】

HDOJ_1159  Common  Subsequence

Sample Input
abcfbc abfcab
programming contest
abcd mnp

Sample Output
  4
  2
  0

子结构特征:

lf(i,j)=     f(i-1,j-1)+1 (a[i]==b[j]) 

      max(f(i-1,j),f(i,j-1)) (a[i]!=b[j])

由于f(i,j)只和f(i-1,j-1), f(i-1,j)和f(i,j-1)有关, 而在计算f(i,j)时,

只要选择一个合适的顺序, 就可以保证这三项都已经计算出来了,

这样就可以计算出f(i,j). 这样一直推到f(len(a),len(b))就得到所要求的解了.

 #include <stdio.h>
#include <string.h>
int main() {
int t,i,j,lena,lenb;
char a[],b[];
int map[][];
while(EOF != scanf("%s %s",a,b)){
lena=strlen(a);
lenb=strlen(b);
memset(map , ,sizeof(map));
for(i=;i<=lena;i++){
for(j=;j<=lenb;j++){
if(a[i-] == b[j-])
map[i][j] = map[i-][j-] + ;
else if(a[i-] != b[j-]){
int temp = map[i-][j];
if(map[i][j-] > temp)
temp = map[i][j-];
map[i][j] = temp;
}
}
}
printf("%d\n",map[lena][lenb]);
}
return ;
}

HDOJ1003

Problem Description
Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence.
For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.
 #include <stdio.h>
#define MAX 100005
int nNum[MAX];
int start, end;
//算法思路:用sum和max来记录临时最大和最终最大
//而start end ts te 分别用来记录起点 终点 临时起始点 终点
int cal(int len){
int max, i, sum, ts, te;
sum = max = -; //让max和sum开始置于无限小
for(i = ; i < len; i++){
if(sum < ){
if(nNum[i] > sum){
sum = nNum[i];
ts = te = i;
if(max < sum){
max= sum;
start = ts;
end = te;
}
}
}else{
sum += nNum[i];
te = i;
if(sum > max){
max = sum;
start = ts;
end = te;
}
}
}
return max;
}
int main(){
int t, i, n, j;
while(EOF != scanf("%d", &t)){
for(i = ; i <= t; i++){
scanf("%d", &n);
for(j = ; j < n; j++)
scanf("%d", &nNum[j]);
int max = cal(n);
printf("Case %d:\n", i);
printf("%d %d %d\n", max, start + , end + );
if(i != t)
printf("\n");
}
}
return ;
}

【集训笔记】动态规划【HDOJ1159【HDOJ1003的更多相关文章

  1. 2017清北学堂(提高组精英班)集训笔记——动态规划Part3

    现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它 ...

  2. leetcode笔记 动态规划在字符串匹配中的应用

    目录 leetcode笔记 动态规划在字符串匹配中的应用 0 参考文献 1. [10. Regular Expression Matching] 1.1 题目 1.2 思路 && 解题 ...

  3. 2019暑期金华集训 Day7 动态规划

    自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...

  4. 【集训笔记】动态规划背包问题【HDOJ1421【HDOJ1058【HDOJ2546

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://acm.zju.edu.cn/onlinejudge/showContestProblem. ...

  5. QDEZ集训笔记【更新中】

    这是一个绝妙的比喻,如果青岛二中的台阶上每级站一只平度一中的猫,差不多站满了吧 自己的理解 [2016-12-31] [主席树] http://www.cnblogs.com/candy99/p/61 ...

  6. [英语学习]微软面试前英语集训笔记-day 1

    最近有机会参加微软面试前的英语集训. 第一天是由wendy老师主讲.热场题目是介绍你自己.包括你的姓名,家庭hobby,爱好,专业,学校,工作经历等等. 接下来的主题是friendship.给我印象较 ...

  7. [笔记]动态规划(dynamic programming)

    动态规划与分治方法都是通过组合子问题的解来求解原问题,区别在于:分治方法将问题划分为互不相交的子问题,递归求解子问题,再将它们的解组合起来,求出原问题的解.分治算法可能反复的求解某些公共子问题,从而使 ...

  8. 【集训笔记】博弈论相关知识【HDOJ 1850【HDOJ2147

    以下资料来自:http://blog.csdn.net/Dinosoft/article/details/6795700 http://qianmacao.blog.163.com/blog/stat ...

  9. 【集训笔记】母函数【母函数模板】【HDOJ1028【HDOJ1085

    以下资料摘自 http://www.cnblogs.com/wally/archive/2012/07/13/hdu1028_1085_1171_.html 生成函数是说,构造这么一个多项式函数g(x ...

随机推荐

  1. python自学笔记(九)python练习题

    1. 已知字符串 a = "aAsmr3idd4bgs7Dlsf9eAF",要求如下 1.1 请将a字符串的大写改为小写,小写改为大写 print a.swapcase() 1.2 ...

  2. wampServer 修改mySql 的root用户密码

    刚安装好时  密码是空的  所以不用输入直接回车就能进入 修改密码参考http://www.cnblogs.com/hooray/archive/2011/07/23/2114792.htmlhttp ...

  3. android学习----overridePendingTransition

    1 Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出时的动画:另外一部分时第二个activity进入时 ...

  4. 基于Visual C++2013拆解世界五百强面试题--题12-进制转换

    编程实现,把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数. 转换成二进制,直接循环移位依次取每一位,判断1或0然后将相应字符放入字符串缓冲区中. 对于十六进制, ...

  5. HDU 3360 National Treasures

    题目大意:大厅每个位置都有一个文物或者一个守卫,文物是安全的前提是: 关键位置上必须有一个守卫,或者文物本身的位置上有一个守卫.求保证每个文物是安全的守卫的最少数量. #include <cst ...

  6. Java中String、StringBuilder以及StringBuffer

    原文出处: 海子 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffe ...

  7. C++类成员常量

    由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const 修饰数据成员来实现.const 数据成员的确是存在的,但其含义却不是我们所期望的.const 数据成员只在某个 ...

  8. C++ Primer 学习笔记_75_模板与泛型编程 --模板定义

    模板与泛型编程 --模板定义 引言: 所谓泛型程序就是以独立于不论什么特定类型的方式编写代码.使用泛型程序时,我们须要提供详细程序实例所操作的类型或值. 模板是泛型编程的基础.使用模板时能够无须了解模 ...

  9. SSIS CDC(Change Data Capture)组件在数据库中启用报错。 The error returned was 14234: 'The specified '@server' is invalid

    昨天实验CDC,在数据库中执行以下语句的时候出错. EXEC sys.sp_cdc_enable_table @source_schema = N'stg', @source_name = N'CDC ...

  10. iOS推送介绍

    iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务 ...