|
发表于 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;
- }
复制代码 |
|