Maximum Length of Repeated Subarray

来源:互联网 发布:windows 关闭系统还原 编辑:程序博客网 时间:2024/06/04 21:15

Maximum Length of Repeated Subarray

题目描述

这里写图片描述

解题思路

题目属于动态规划一栏,自然会下意识通过动态规划方面的思想去想对策,动态规划算法的核心便是状态与状态转移方程,即当前的状态需要依靠前一个状态的值。而在本题中我完全可以用C[i][j] 来表示各自数组分别以A[i] 和 B[j] 结尾的最长公共子串的长度,如果A[i]==B[j],C[i][j]=C[i−1][j−1]+1。

C++代码实现

class Solution {public:    int findLength(vector<int>& A, vector<int>& B) {        vector<vector<int> > C(A.size() + 1, vector<int>(B.size() + 1, 0));        int max = 0;        for (int i = 1; i < A.size() + 1; ++i) {            for (int j = 1; j < B.size() + 1; ++j) {                if (A[i - 1] == B[j - 1]) {                    C[i][j] = C[i - 1][j - 1] + 1;                }                max = max > C[i][j] ? max : C[i][j];            }        }        return max;    }};

题目样例测试结果

这里写图片描述