题解 | #Coincidence#

Coincidence

https://www.nowcoder.com/practice/f38fc44b43cf44eaa1de407430b85e69

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

const int MAXN = 120;
int dp_data[MAXN][MAXN];
string a_str, b_str;
void initConfig() {
    for (int i = 0; i < MAXN; i++) {
        for (int j = 0; j < MAXN; j++) {
            dp_data[i][j] = 0;
        }
    }
}
int DP(int a_index, int b_index) {
    if (a_index == -1 || b_index == -1) {
        return 0;
    } else if (dp_data[a_index][b_index] != 0) {
        return dp_data[a_index][b_index];
    } else {
        int max_length = 0;
        if (a_str[a_index] == b_str[b_index]) {
            max_length = max(max_length, DP(a_index - 1, b_index - 1) + 1);
        }
        max_length = max(max_length, DP(a_index - 1, b_index));
        max_length = max(max_length, DP(a_index, b_index - 1));
        dp_data[a_index][b_index] = max_length;
        return    dp_data[a_index][b_index];

    }
}

int main() {

    cin >> a_str >> b_str;
    initConfig();
    cout << DP(a_str.size() - 1, b_str.size() - 1);


}

全部评论

相关推荐

专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务