世間上本沒有路,走的人多了,也便就有了路。。。
不要想一次就把一樣東西搞得通透和全面,在處理某些事情的時候,我們只能盡自己的所能,如果錯過了最佳補救的時間,那就下次,或者接著補全,不要重新翻到過去重新再來一遍,那樣會適得其反,總之,一次不行,那就多來幾輪,總會越來越好的,路就是這樣慢慢走出來的。。。
最經典的dp問題之一
//#include
#include
#include
#include
#include
using
namespace std;
void
lcs(string s1,string s2)
}for
(int i=
0;i)for
(int i=
0;i)for
(int i=
0;i1;i++
)else
if(c[i]
[j+1
]>=c[i+1]
[j])
else}}
for(
int i=
0;i)printf
("\n");
} stack<
char
>same;
//存lcs字元
stack<
int>same1,same2;
//存lcs字元在字串1和字串2中對應的下標,方便顯示出來
for(
int i=m-
1,j=n-
1;i>=
0&&j>=0;
)else
if(b[i]
[j]==2)
else
}printf
("%s\n"
,s1.
c_str()
);//輸出字串 1
for(
int i=
0;i!same1.
empty()
;i++
)else
}printf
("\n%s\n"
,s2.
c_str()
);//輸出字串 2
for(
int i=
0;i!same2.
empty()
;i++
)else
}printf
("\n最長公共子串行為:");
while
(!same.
empty()
)printf
("\n長度為:%d\n"
,c[m-1]
[n-1])
;for
(int i=
0;i)delete
c;delete
b;}int
main()
tips:printf如何輸出string:
在string型別後加上c_str()就可以了。例如:printf("%s\n",s1.c_str());
9 最長公共子串行
9.最長公共子串行 description 給定兩個字串,返回兩個字串的最長公共子串行 不是最長公共子字串 可能是多個。input 輸入為兩行,一行乙個字串 output 輸出如果有多個則分為多行,先後順序不影響判斷。sample input 1 1a2bd3g4h56jk 23efg4i5j6k7...
演算法 最長公共子串行
好久沒做演算法題了,現在發現自己的演算法能力非常薄弱,所以特意練練,順便做個筆記方便以後檢視。今天整理一下最長公共子串行,最長公共子串行的問題常用於解決字串的相似度,是乙個非常實用的演算法,作為碼農,此演算法是我們的必備基本功。最長公共子串行,是指兩個字串可具有的長度最大的公共的子串行。聽著好像有點...
演算法 最長公共子串行
題目 給定兩個字串 text1 和 text2,返回這兩個字串的最長公共子串行的長度。乙個字串的 子串行 是指這樣乙個新的字串 它是由原字串在不改變字元的相對順序的情況下刪除某些字元 也可以不刪除任何字元 後組成的新字串。例如,ace 是 abcde 的子串行,但 aec 不是 abcde 的子串行...