晴神这个的最巧妙之处,在于用dp[i][0] = dp[0][j] = 0的边界条件

这样从1的下标开始填数组的时候,递推公式dp[i-1][j-1]之类的不会报错

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std; int main()
{
string str1, str2;
cin >> str1 >> str2;
int len1 = str1.length(); //i
int len2 = str2.length(); //j
vector<vector<int>> dp;
//根据长度开创一个动态二维数组 //vector的初始化,先全部置零
vector<int> tmp;
tmp.insert(tmp.begin(), len2 + 1, 0);
dp.insert(dp.begin(), len1 + 1, tmp); //填写第一个
if (str1[0] == str2[0])
{
dp[0][0] = 1;
} //写状态转移方程
for (int i = 1; i < len1 + 1; i++)
{
for (int j = 1; j < len2 + 1; j++)
{
if(str1[i-1] == str2[j-1])
{
dp[i][j] = dp[i-1][j-1] + 1;
}
else
{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
} }
} cout << dp[len1][len2] << endl; //数组下标从0开始,直接输出相当于+1了。 system("pause");
}

最新文章

  1. StringBuilder(字符串拼接类)
  2. Openlayers自定义简单popup
  3. 开发板支持wifi
  4. java 程序访问hdfs错误 hadoop2.2.0
  5. Thwarting Buffer Overflow Attacks Stack Randomization
  6. Recast &amp; Detour &amp; TerrainExport Study Feeling
  7. 简单实例讲解linux的module模块编译步骤
  8. 图算法之Floyd-Warshall 算法-- 任意两点间最小距离
  9. 【HDOJ】2102 A计划
  10. YouTube CEO关于工作和生活平衡的完美回答
  11. Ubuntu + Django + Nginx + uwsgi
  12. Git基础教程(一)
  13. # hadoop入门第六篇:Hive实例
  14. MSSQL 自定义函数详解
  15. 看图说话,P2P 分享率 90% 以上的 P2P-CDN 服务,来了!
  16. python扩展包的升级
  17. Python 中的map、reduce函数用法
  18. Linux下Tomcat项目启动报错
  19. Laravel框架中实现supervisor执行异步进程
  20. JS调用百度地图API标记地点

热门文章

  1. 问题 B: 喷水装置(二)(在c++上运行有错误,提交AC了)
  2. hbuilder中webview调试console.log无法输出日志的问题
  3. Linux——搭建FTP服务
  4. loto示波器实践——超声波测距模块
  5. Nginx的try_files指令使用实例
  6. SpringBoot数据源相关配置
  7. 使用pmml实现跨平台部署机器学习模型
  8. win10的pycharm中安装ansible模块过程
  9. [cf566C]Logistical Questions
  10. Study Blazor .NET(二)安装