C++動(dòng)態(tài)規(guī)劃之最長(zhǎng)公子序列實(shí)例
本文實(shí)例講述了C++動(dòng)態(tài)規(guī)劃之最長(zhǎng)公子序列解決方法。分享給大家供大家參考。具體分析如下:
問題描述:
求出兩個(gè)字符串中的最長(zhǎng)公子序列的長(zhǎng)度。
輸入:
csblog
belong
輸出:
max length = 4
實(shí)現(xiàn)代碼:
#include <stdio.h> #include <string.h> int arr[200][200]; /* 表示str1的前i位和str2的前j位的最長(zhǎng)公子序列的長(zhǎng)度 */ int main() { char str1[100],str2[100]; /* 輸入數(shù)據(jù) */ scanf("%s%s",str1,str2); int len1 = strlen(str1); int len2 = strlen(str2); /* 初始化數(shù)組 */ int i,j; for(i = 0 ; i <= len1 ; ++i) { for(j = 0 ; j <= len2 ; ++j) arr[i][j] = 0; } /* 計(jì)算 */ for(i = 1 ; i <= len1 ; ++i) { for(j = 1 ; j <= len2 ; ++j) { /* 字符相同,則最長(zhǎng)公子序列長(zhǎng)度加1 */ if(str1[i - 1] == str2[j - 1]) { arr[i][j] = arr[i - 1][j - 1] + 1; } else /* 當(dāng)前字符不相同,則取上次選擇的最大值做為當(dāng)前結(jié)果 */ { arr[i][j]=arr[i][j-1]>arr[i-1][j]?arr[i][j-1]:arr[i-1][j]; } } } /* 輸出結(jié)果 */ printf("max length = %d\n",arr[len1][len2]); return 0; }
希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。
- C++中的動(dòng)態(tài)規(guī)劃子序列問題分析探討
- C++動(dòng)態(tài)規(guī)劃計(jì)算最大子數(shù)組
- C++動(dòng)態(tài)規(guī)劃算法實(shí)現(xiàn)矩陣鏈乘法
- C++動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)查找最長(zhǎng)公共子序列
- C++?動(dòng)態(tài)規(guī)劃算法使用分析
- C++編輯距離(動(dòng)態(tài)規(guī)劃)
- c++動(dòng)態(tài)規(guī)劃經(jīng)典算法
- C++動(dòng)態(tài)規(guī)劃之背包問題解決方法
- C++動(dòng)態(tài)規(guī)劃中關(guān)于背包問題講解
相關(guān)文章
C++利用鏈表實(shí)現(xiàn)圖書信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++利用鏈表實(shí)現(xiàn)圖書信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法匯總
這篇文章主要介紹了VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法,對(duì)于更好的了解OpenGL很有幫助,需要的朋友可以參考下2014-07-07c語言大小端(數(shù)據(jù)在內(nèi)存中的存儲(chǔ))
大小端是內(nèi)存存儲(chǔ)字節(jié)的兩種方式,一個(gè)是大端存儲(chǔ),一個(gè)是小端存儲(chǔ),本文主要介紹了c語言大小端,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09用c語言實(shí)現(xiàn)一個(gè)電話薄(附完整代碼)
大家好,本篇文章主要講的是用c語言實(shí)現(xiàn)一個(gè)電話?。ǜ酵暾a),感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01