

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
def lcs(X, Y):
m = len(X)
n = len(Y)
L = [[0] * (n + 1) for i in range(m + 1)]
for i in range(m + 1):
for j in range(n + 1):
if i == 0 or j == 0:
L[i][j] = 0
elif X[i - 1] == Y[j - 1]:
L[i][j] = L[i - 1][j - 1] + 1
else:
L[i][j] = max(L[i - 1][j], L[i][j - 1])
return L[m][n]
Hãy giúp mọi người biết câu trả lời này thế nào?
\begin{array}{c} \color{#FFFFFFff}{H}\color{#E7E7E7ff}{o}\color{#CFCFCFff}{r}\color{#B7B7B7ff}{i}\color{#9F9F9Fff}{z}\color{#878787ff}{o}\color{#6F6F6Fff}{n} \end{array} $\\$
/*
author - Horizon
created - 7:37AM - 09/03/2025
*/
#include <bits/stdc++.h>
using namespace std;
#define N 1000
int a[13][N+3], pos[13][N+3], dd[N+3], dp[N+3];
bool cmp(int a, int b) {
return pos[0][a]<pos[0][b];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n,m; cin>>n>>m;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
int x=a[i][j];
pos[i][x]=j;
}
for(int i=0;i<n;i++) dd[i]=i+1;
sort(dd,dd+n,cmp);
int ans=1;
for(int i=0;i<n;i++){
dp[i]=1;
for(int j=0;j<i;j++){
bool ok=true;
for(int k=1;k<m;k++){
if(pos[k][dd[j]]>=pos[k][dd[i]]){
ok=0;
break;
}
}
if(ok) dp[i]=max(dp[i],dp[j]+1);
}
ans = max(ans,dp[i]);
}
cout << ans;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin