lm bằng code c++ ak
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
using namespace std;
int n,res,pos,dis;
int a[1000],dp[10000];
void truyvet(int i){
int cnt=0;
for (int j=1;j<=i-1;j++){
if(a[i]>a[j] && dp[i]==dp[j] + 1){
cnt=j;
break;
}
}
if(cnt!=0){
truyvet(cnt);
}
cout<<i<<" ";
}
main(){
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=1;i<=n;i++){
dp[i]=1;
for (int j=1;j<=i-1;j++){
if(a[i]>a[j]) dp[i]=max(dp[i],dp[j]+1);
}
}
for (int i=1;i<=n;i++){
if(res<dp[i]){
res=dp[i];
dis=i;
}
}
cout<<res<<"\n";
truyvet(dis);
return 0;
}
//Truy vet quy hoach dong
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
15
280
2
cho tui xin 5 sao <(")
2707
41668
2037
Bạn làm tương đối tốt tại sub 2 rồi, nhưng với sub 3 thì dp + truy vết cũng khó qua ấy