社区讨论
关于算法竞赛进阶指南P267 LCIS 的问题
学术版参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lob8t3s3
- 此快照首次捕获于
- 2023/10/29 17:02 2 年前
- 此快照最后确认于
- 2023/11/03 23:07 2 年前
根据书中所言,朴素做法O(n^3)时转移方程的计算如下:
CPPfor(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i]==b[j])
for(int k=0;k<j;k++)
if(b[k]<b[j])
f[i][j]=max(f[i][j],f[i-1][k]+1);
else f[i][j]=f[i-1][j];
但如果面对以下数据:
4 4
2 2 1 3
2 1 2 3
则输出结果为1
但答案显然为2
将
CPPf[i][j]=f[i-1][j]
提至
CPPif(b[k]<b[j])
之上,并不加判断条件却可以得出正确结果
请问对于书中给出的代码是否需要做初始化以及初始化成什么
亦或是书中给出代码存在逻辑上的漏洞
萌新不解,求dalao解惑
回复
共 3 条回复,欢迎继续交流。
正在加载回复...