兩種水果雜交出一種新水果,現在給新水果取名,要求這個名字中包含以前兩種水果的字母,且名字盡量短,即:以前的水果名字arr1、arr2是新水果名arr的子串行,使用動態規劃的思想設計演算法得到新水果名arr。
輸入格式:
以空格分開兩個水果的名字
輸出格式:
新水果的名字
輸入樣例:
輸出樣例:
#include
#include
using namespace std;
int lsc[
1000][
1000];
int path[
1000][
1000];
char str1[
1000
],str2[
1000];
void
getlsc()
else
if(lsc[i+1]
[j]>=lsc[i]
[j+1])
else}}
}void
outputpath
(int m,
int n)
if(n==0)
if(path[m]
[n]==1)
else
if(path[m]
[n]==2)
else
if(path[m]
[n]==3)
}int
main()
動態規劃演算法
一 動態規劃演算法原理 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後從這些子問題的解得到原問題的解 對於重複出現的子問題,只在第一次遇到的時候對它進行求解,並把答案儲存起來。了不去求解相同的子問題,引入乙個陣列,把所有子問題的解存於該陣列中,這就是動態規劃所採用的基本方法。動態規劃...
動態規劃演算法
動態規劃 通過把原問題分解為相對簡單的子問題來求解複雜問題。動態規劃常常適用於有重疊子問題和最優子結構性質的問題。演算法總體思想 演算法的基本步驟 演算法的基本要素 最優子結構 重疊子問題 備忘錄方法 問題描述 子串行 公共子串行 最長公共子串行 lcs 問題 問題分析 動態規劃求解lcs問題 最長...
動態規劃演算法
動態規劃演算法的思路 動態規劃法即 dynamic programming method dp 是系統分析中的種常用方法。動態規劃法是20世紀50年代由貝爾曼 r.bellman 等人提出的,用來解決多階段決策過程問題的一種最優化方法。多階段決策過程是指把研究問題分成若干個相互聯絡的階段,由每個階段...