在本文中,我們主要介紹數組字符串的內容,自我感覺有個不錯的建議和大家分享下
???? 標題: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1346
???? 經典的LCS水題。。。
???? 用來入門是極好的。也是我的第一道dp題。
???? 但是一個非??拥狞c是它的數據似乎有單數組的,這意味著如果用while(gets(a))這樣去做循環的話可能會犯錯,必須用兩個串一起讀入才行,這點上我被坑了幾回。。。但貌似有人也用讀單串去寫卻沒有犯錯( 見此 ),不知道是我判斷錯誤還是其他問題。。。
???? 還有一點,第一次做dp題,搞懂算法后卻不知道如何讀入字符串才能讓數組第一位是0,最后是參考了別人代碼后用gets(a+1)這類形式讀入字符串,以及strlen(a+1)獲取字符串長度,豁然開朗啊。
???? 后來我又發現了其實可以正常去讀入,在dp的時候對貯存數組處置時下標都多+1就行了。。。
????
#include<cstdio> #include<cstring> #define MAXN 1010 char a[MAXN], b[MAXN]; int c[MAXN][MAXN]; int max(int a, int b) { if (a > b) return a; return b; } int main() { while (gets(a + 1) && gets(b + 1)) { int al = strlen (a + 1), bl = strlen (b + 1); memset(c, 0, sizeof(c)); for (int i = 1; i <= al; i++) for (int j = 1; j <= bl; j++) if (a[i] == b[j]) c[i][j] = c[i - 1][j - 1] + 1; else c[i][j] = max(c[i - 1][j], c[i][j - 1]); printf("%d\n", c[al][bl]); } return 0; }
文章結束給大家分享下程序員的一些笑話語錄: 系統程序員
1、頭皮經常發麻,在看見一個藍色屏幕的時候比較明顯,在屏幕上什幺都看不見的時候尤其明顯;
2、乘電梯的時候總擔心死機,并且在墻上找reset鍵;
3、指甲特別長,因為按F7到F12比較省力;
4、只要手里有東西,就不停地按,以為是Alt-F、S;
5、機箱從來不上蓋子,以便判斷硬盤是否在轉;
6、經常莫名其妙地跟蹤別人,手里不停按F10;
7、所有的接口都插上了硬盤,因此覺得26個字母不夠;
8、一有空就念叨“下輩子不做程序員了”;
9、總是覺得9號以后是a號;
10、不怕病毒,但是很害怕自己的程序;
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
