POJ 1458 簡單dp 最長公共子序列
要求:輸出最長公共子序列的長度
方法:dp裸題
1.狀態:dp[i][j]表示第一個序列的前i個字元和第二個序列的前j個字元的最長公共子序列的長度。
2.狀態轉移方程在程式碼中。
3.首要是程式碼規範化,然後才是找bug。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char s1[1005],s2[1005]; int dp[1005][1005]; int main() { int i,j,k,n,m; while(scanf("%s%s",s1,s2)!=EOF) { memset(dp,0,sizeof(dp)); n=strlen(s1); m=strlen(s2); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(s1[i-1]==s2[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } printf("%d\n",dp[n][m]); } }
相關推薦
POJ 1458 簡單dp 最長公共子序列
要求:輸出最長公共子序列的長度 方法:dp裸題 1.狀態:dp[i][j]表示第一個序列的前i個字元和第二個序列的前j個字元的最長公共子序列的長度。 2.狀態轉移方程在程式碼中。 3.首要是程式碼規範化,然後才是找bug。 #include<stdio.h> #inc
POJ 2533 簡單dp 最長上升子序列
要求:輸出一段序列a的最長上升子序列的長度。 方法:dp 1.這題有個二分的方法,但是我用暴力做的。 2.dp[i]表示以原序列中下標為i的元素結尾的子序列的最大長度。 dp[i] = max(dp[i] , dp[j] + 1) (j < i 且 a
POJ 1458 Common Subsequence(最長公共子序列LCS)
題意: 給你兩個字串, 要你求出兩個字串的最長公共子序列長度. 分析: 本題不用輸出子序列,很簡單,直接處理即可. 首先令dp[i][j]==x表示A串
POJ 1458/HDU 1159 最長公共子序列 (動態規劃)
題目連結:poj && hdu 程式碼 #include <iostream> #include <cstdio> #include <algo
dp-最長公共子序列(LCS)
維數 追加 brush 解決 復雜 long long abcde urn 二維 字符序列 與 字符字串的區別 序列是可以不連續的字符串 , 字串必須要是連續的 。 問題描述 : 給定兩串字符串 abcde 和 acdf , 找出 2 串中相同的字符序列,觀
POJ1458 Common Subsequence —— DP 最長公共子序列(LCS)
common vector tin enc one 技術分享 com iss char 題目鏈接:http://poj.org/problem?id=1458 Common Subsequence Time Limit: 1000MS Memory Limi
HRBUST 2010【簡單dp+最長遞減子序列】
amp stdio.h 遞增 scan ace name 多少 scanf ring 題目:所謂二等隊形就是從大到小依次排列,即對於數列a,二等隊形為任意a【i】滿足:a【i】>a【i+1】。現在給出一個長度為n的數列,從中最少去除多少個數可使數列變成二等隊形數列。
newcoder 練習賽17 B 好位置 dp 最長公共子序列
abc i++ 包含 輸入 http light DC 同時 輸出 鏈接:https://www.nowcoder.com/acm/contest/109/B來源:牛客網 好位置 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,
dp-最長公共子序列
最長公共子序列(NYOJ36) 時間限制: 3000 ms | 記憶體限制:65535 KB 難度: 3 描述 咱們就不拐彎抹角了,如題,需要
nyoj37 迴文字串 dp最長公共子序列LCS
迴文字串 時間限制:3000 ms | 記憶體限制:65535 KB 難度:4 輸入 第一行給出整數N(0<N<100) 接下來的N行,每行一個字串,每個字串長度不超過1000. 輸出 每行輸出所需新增的最少字元數 樣例輸入 1 Ab3bd
Common Subsequence (DP最長公共子序列)
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, ...,
hdu 1159 經典dp最長公共子序列
背景:上次比賽就沒有做出來,回來根據實際意義半天也想不出如何dp,結果從猜轉移方程入手,竟然想對了!開始想把空間優化到一維陣列,沒有想到要用同維度左邊的值wa了。 思路: dp[i][j]=max{m
poj 1159 Palindrome(最長公共子序列+滾動陣列)
A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to writ
HDU——1159 Common Subsequence(DP 最長公共子序列)
Problem Description A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a
HDU 1159 【基礎DP 最長公共子序列】
TAT,,,覺得自己不算太理解,但是居然可以憑著記憶做出來。。蠻拼的 #include <cstdio> #include <cstring> #include <iostream> #include <string> usi
POJ 1458 - Common Subsequence(最長公共子序列) 題解
void 方式 mem strong 輸出 inline ron eof init 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:http://poj.org/problem?id=1458 題目大意: 有若幹組數據,每組給出兩個字符
DP簡單問題聯系--最長遞增子序列+最長公共子序列等
text 個數 -- col tle space iostream 子序列 一行 今天重溫了一下dp問題,發現自己兩個禮拜不寫題目就什麽都不會了。。。心態爆炸,感覺去考試怕是要gg了。。。 不過今天總結一下寫的題目,全部都是基礎的dp問題 第一個是 求最長不下降子序列
POJ-1458 最長公共子序列
這個題的意思就是說: 給一個序列 A 和 B ,讓你求他們的共同的子序列的長度,這些子序列可以不在原來的字串中連續排列。 這個題的話,我們可以使用動態規劃的思路,我們假設 MaxLen [ i ] [ j ] 是 A 串和 B 串中從一開始的,A 串中的的第 i 個字元和B 串中的第 j 個
poj——1159(dp之最長公共子序列)
注:C++執行時Runtime Error,G++過了。(這編譯器,真無語了)。 #include <iostream> #include <cmath> #include
【poj 1159】 Palindrome DP(類最長公共子序列)+滾動陣列
Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 58492 Accepted: 20318 Description A palindrom