球条~~qwq

B3637 最长上升子序列

vipcodejff @ 2024-11-01 20:36:39

#include <iostream>

using namespace std;

int N,num;
int a[1111];
int f[1111]={};

int main()
{
    cin>>N;
    for(int i=0;i<1111;i++){
        f[i]=1;
    }
    for(int i=0;i<N;i++){
        cin>>a[i];
    }
    for(int i=0;i<N;i++){
        for(int j=0;j<i;j++){
            if(a[i]>a[i-j]){
                f[i]=f[i-j]+1;
            }
        }
    }
    for(int i=1;i<N;i++){
        num=max(f[i],f[i-1]);
    }
    cout<<num<<endl;
    return 0;
}

by wang6w6 @ 2024-11-03 19:44:48

@vipcodejff 他在比最大时应该是与自己比,而且你的状态转移方程好奇怪啊```

include <iostream>

using namespace std;

int N,num; int a[5111]; int f[5111]={};

int main() { cin>>N; // for(int i=0;i<1111;i++){ //
// } for(int i=0;i<N;i++){ cin>>a[i]; f[i]=1; } for(int i=0;i<N;i++){ for(int j=0;j<i;j++){ if(a[j]<a[i]){ f[i]=max(f[i],f[j]+1); num=max(f[i],num); } } } // for(int i=0;i<N;i++){ //
// } cout<<num<<endl; return 0; }


by wang6w6 @ 2024-11-03 19:46:49

他在比最大时应该是与自己比而且你的状态转移方程好奇怪啊

#include <iostream>

using namespace std;

int N,num;
int a[5111];
int f[5111]={};

int main()
{
    cin>>N;
//  for(int i=0;i<1111;i++){
//   
//  }
    for(int i=0;i<N;i++){
        cin>>a[i];
        f[i]=1;
    }
    for(int i=0;i<N;i++){
        for(int j=0;j<i;j++){
            if(a[j]<a[i]){
                f[i]=max(f[i],f[j]+1);
                num=max(f[i],num);
            }
        }
    }
//  for(int i=0;i<N;i++){
//      
//  }
    cout<<num<<endl;
    return 0;
}

错了错了重发一遍


by vipcodejff @ 2024-11-08 19:18:20

@wang6w6 谢谢大佬


|