9637 . 综合题 Puls

阅读程序(3)

#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][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;
}
28 . (判断题)

当输入“4 1 2 3 4 1 3 2 2 ” 时 ,输 出 为 2 。

29 . (判断题)

当程序运行完毕后,对于所有的1≤i,j≤n, 都一定有f[i][j]<=f[n][n] 。

30 . (判断题)

将第18行的“f[i][j]=std::max(f[i][j],std::max(f[i-1][j],f[i][j-1]);” 删去后,并不影响程序运行结果。

31 . (单选题)

输出的答案满足的性质有

32 . (单选题)

如果在16行的循环前加上以下两行: “std::sort(a+1,a+n+1); std::sort(b+1,b+n+1)”, 则 答 案 会( )。