如果输入的a={1,2,...,n},而且b数组中数字均为1~n中的正整数,则上述代码等价于下面哪个问题:()。
#include <algorithm>
#include <cstdio>
#include <cstring>
#define ll long long
int f[5007][5007];
int a[5007], b[5007];
int n;
int main(){
scanf("%d", &n);
for (int i=1; i<=n; ++i){
scanf("%d", &a[i]);
}
for(int i=1; i<=n; ++i){
scanf("%d", &b[i]);
}
for(int i=1; i<=n; ++i){
for(int j=1; j<=n; ++j){
f[i][j] = std::max(f[i-1][j], std::max(f[i-1][j], f[i][j-1]));
if(a[i]==b[j]){
f[i][j] = std::max(f[i][j], f[i-1][j-1]+1);
}
}
}
printf("%d\n", f[n][n]);
return 0;
}求b数组去重后的长度
求b数组的最长上升子序列
求b数组的长度
求b数组的最大值