三、动态规划(1)-最长公共子序列( POJ1458)


需要找到每个公共字符顺序相同的序列即可。

#include <iostream>
#include<algorithm>
#include<string>
using namespace std;

string s1;
string s2;
//数组保存
int maxLen[100][100];

int main(){
    cout << "输入两个字符串,空格分开:";
    while (cin >> s1 >> s2){
        int len1 = s1.length();
        int len2 = s2.length();
        int n;
        int i, j; 
        //初始化
        for (i = 0; i <= len1; ++i)
            maxLen[i][0] = 0;
        for (j = 0; j <=len2; ++j)
            maxLen[0][j] = 0;

        for (i = 1; i <=len1; ++i)
        {
            for (j = 1; j <= len2; ++j)
            {
                if (s1[i - 1] == s2[j - 1])
                    maxLen[i][j] = maxLen[i - 1][j - 1] + 1;
                else{
                    maxLen[i][j] = max(maxLen[i - 1][j], maxLen[i][j - 1]);
                }
            }
        }
        cout << "最长子序列长度: "<<maxLen[len1][len2] << endl;
        for (i = 0; i <= len1; ++i)
        {
            for (j = 0; j <= len2; ++j)
                cout << " " << maxLen[i][j] << " ";
            cout << endl;
        }
    }
    return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,092评论 19 139
  • 来源:http://blog.csdn.net/hrn1216/article/details/51534607 ...
    Arya鑫阅读 5,536评论 0 3
  • 一个字符串的子串是字符串中连续的一个序列,而一个字符串的子序列是字符串中保持相对位置的字符序列,譬如,"adi"可...
    AwesomeAshe阅读 4,937评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,777评论 0 4
  • 早起下楼,去离家不远的菜市场买一碗热干面。边走边吃,感受这个城市一部分的早晨。 每每回到武汉,都习惯待在家里,看书...
    Won劼阅读 1,436评论 0 0

友情链接更多精彩内容