最长公共子序列(模板题)
1.今天学了一手最长上升子序(模板题)
贴一下代码吧(输出最大路径值与输出路径
#include<bits/stdc++.h> using namespace std; int a[1010]; int p[1010];//p数组是记录路径下标 int f[1010]; int n; void print(int i){//这里是输出路径,递推式,sum值逐渐递减 if(p[i]) print(p[i]); printf("%d ",a[i]); } int main(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; int ans=1,sum=0; for(int i=1;i<=n;i++)f[i]=1;//初始化f[i]=1; for(int i=2;i<=n;i++){ for(int j=1;j<i;j++){ if(a[i]>a[j]&&f[j]+1>f[i]){ f[i]=f[j]+1; p[i]=j; } } if(f[i]>ans){//记录最大路径值 ans=f[i]; sum=i; } } printf("%d\n",ans); print(sum); return 0; }
第一次写博客,有点粗糙,见谅——————QWQQWQ

浙公网安备 33010602011771号