這題也可以用lis求解。lis解題報告:動態規劃 | 對輸入進行hash處理的lis 1045
普通lcs是必須完全匹配的,所以狀態轉移方程式(末端匹配到時):dp[i][j]=dp[i-1][j-1]+1
但是本題連續的序列是可以累加的。所以狀態狀態轉移方程式(末端匹配到時):dp[i][j]=max{dp[i-1][j],dp[i][j-1]}+1
兩個狀態的最大值+1就是dp[i][j]的值
ac**:
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#define i scanf
#define ol puts
#define o printf
#define f(a,b,c) for(a=b;a#define ff(a,b) for(a=0;a#define fg(a,b) for(a=b-1;a>=0;a--)
#define len 10010
#define max (1<<30)-1
#define v vectorusing
namespace
std;
int a[210
];int b[10010
];
int dp[210][10010
];int
main()
else}}
o("%d\n
",dp[m][l]);
return0;
}
演算法 刪除鍊錶重複元素,只保留非重複元素
definition for singly linked list.public class listnode 核心思想 判斷當前節點是否需要刪除的方法是檢查當前節點是否與相鄰的前後節點相等。定義乙個fast指標來遍歷鍊錶 定義乙個prefast指標來記錄fast的前一位 定義乙個slow指標來記錄...
Lc83 刪除排序鍊錶中的重複元素
package com.example.demo 83.刪除排序鍊錶中的重複元素 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2 示例 2 輸入 1 1 2 3 3 輸出 1 2 3 public class lc83 思路 宣告乙個游標去比較...
重複元素的刪除
time limit 1000ms memory limit 65536k 按照資料輸入的相反順序 逆位序 建立乙個單鏈表,並將單鏈表中重複的元素刪除 值相同的元素只保留最後輸入的乙個 第一行輸入元素個數n 第二行輸入n個整數。第一行輸出初始鍊錶元素個數 第二行輸出按照逆位序所建立的初始鍊錶 第三行...