代码献上:
#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define INF 1001
ull n;
ull dp[INF][INF] = {0};
ull in1[INF] = {0};
ull in2[INF] = {0};
void in()
{
cin >> n;
for (ull i = 1; i <= n; i++)
cin >> in1[i];
for (ull i = 1; i <= n; i++)
cin >> in2[i];
}
ull LCS()
{
for (ull i = 1; i <= n; i++)
{
for (ull j = 1; j <= n; j++)
{
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);
if (in1[i] == in2[j])
dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + 1);
}
}
return dp[n][n];
}
int main()
{
in();
ull a = LCS();
cout << a << endl;
return 0;
}
半对半错,大佬求助!!
在线等!!