題目思想大概是這樣:cabbeaf:回文子串行有:c,a,aa,bb,,aba,abba,e,f,最長的就是abba,所以輸出長度為4
#include#include#includeusing namespace std;
const int n = 2000;
int dp[n][n];
int main() //顛倒字串順序 ,正序、倒序比較 從而求出最長子序列
cout << dp[lena][lena]; //即為最長公共子串行
/*cout << lena - dp[lena][lena]; */ 根據規律可知由 字串長度 減去 最長公共子串行
return 0;
}
乙個字串,如果從左到右讀和從右到左讀是完全一樣的,比如"aba",我們稱其為回文串。現在給你乙個字串,可在任意位置新增字元,求最少新增幾個字元,才能使其變成乙個回文串。
上方 /* */為這一問解答
int dp(int i, int j) // 倒推,用遞迴的方法從大的號碼 往小號 累加 最後[0][0]就是最大值
if (i == m) // 到達底端,就只能往右走
if (j == n) // 到達右端,只能往下走
else // 否則在這一點能夠獲得的最大價值就是該點的寶物價值加上往右或者往下走能夠獲得的最大價值 }
int s(int i, int j)
else }
int main()
} printf("%d ", dp(1, 1));
printf("%d\n",s(1,1));
return 0;
}
動態規劃的個人感想
半停課狀態的這幾天,我猛肝了一波動態規劃,突然有了以下一些思路和感想。1.大多題目都可以使用動態規劃來做,只是時間和空間是否允許的問題。1.1使用f陣列描述狀態,如果描述不清,加一維 還描述不清,再加一維。直到演算法的時間或空間gg為止。n個 可能大多數情況無法實現,但是我認為客觀存在這種演算法。1...
動態規劃的問題總結
1 dp 個數 weight 例子 poj 1837 balance dp i w relate to dp i 1 w c j 這道題中dp儲存的不是weight,而是方法個數 include include include include include include define maxnu...
線性動態規劃的歸納總結
lcs問題 矩陣路徑問題 只能往右或往下 其他線性dp 歸納模式二 相鄰選點 歸納模式三 物品分配 歸納模式四 線段覆蓋 雜項歸納模式六 方法1,o n2 暴力 int main ans max ans,f i cout 方法2,o nlogn 二分查詢 void run int n cout in...