|  | 
 
 发表于 2022-3-21 15:20:35
From FishC Mobile
|
显示全部楼层 
| 柿子饼同学 发表于 2022-3-21 11:14话说您是怎么学动态规划的呀
 我感觉好难懂
 这是不是就是一种递归啊
我是用 LCS 公式写的代码,公式如图:
   代码:
 复制代码#include <iostream>
#include <vector>
#include <algorithm>
int C(size_t i, size_t j, std::vector<int> X, std::vector<int> Y){
        if(!i || !j) return 0;
        else if(X[i] == Y[j]) return C(i-1, j-1, X, Y) + 1;
        return std::max(C(i, j-1, X, Y), C(i-1, j, X, Y));
}
int main() {
        int A[] = {1, 3, 4, 5, 6, 7, 7, 8};
        int B[] = {3, 5, 7, 4, 8, 6, 7, 8, 2};
        size_t m = (sizeof(A)/sizeof(int)); // A 长度
        size_t n = (sizeof(B)/sizeof(int)); // B 长度
        std::vector<int> X(A, A+m); // vector 赋值
        std::vector<int> Y(B, B+n); // vector 赋值
        std::cout << C(m, n, X, Y); // 答案:5
        return 0;
}
 | 
 |