每日一题————2026-6-29 最长公共子序列

发布时间:2026/6/30 2:55:25
每日一题————2026-6-29 最长公共子序列 最长公共子序列题目描述给出1-n的两个排列P1和P2求它们的最长公共子序列。输入格式第一行是一个数nn≤1000接下来两行每行为n个数为自然数1-n的一个排列。输出格式一个数即最长公共子序列的长度。输入输出样例输入样例15 3 2 1 4 5 1 2 3 4 5输出样例13参考AC代码#include bits/stdc.husing namespace std;using LL long long;LL p1[1000 10], p2[1000 10], n, dp[1010][1010];int main(){scanf (%lld, n);for (LL i 1;i n;i ) cin p1[i];for (LL i 1;i n;i ) cin p2[i];for (LL i 1;i n;i ){for (LL j 1;j n;j ){if (p1[i] p2[j]){dp[i][j] dp[i - 1][j - 1] 1;}else{dp[i][j] max(dp[i - 1][j], dp[i][j - 1]);}}}cout dp[n][n];return 0;}