紧急求调:全wa

B3637 最长上升子序列

qdzxsyt @ 2024-07-14 10:29:24

WA代码:


#include<bits/stdc++.h>
using namespace std;
int n,ans=-1e6;
int f[100100],num[100010],compare=0;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>num[i];
    }
    memset(f,1,sizeof f);
    for(int i=2;i<=n;i++)
    {
        for(int j=1;j<i;j++)
        {
            if(num[i]>num[j])
            {                         
                f[i]=max(f[j]+1,f[i]);
            }                         
        }
    }
    for(int i=1;i<=n;i++)
    {                                 ans=max(f[i],ans);
    }
    cout<<ans;
    return 0;
}

by xzy_caiji @ 2024-07-14 10:34:29

@qdzxsyt 不会用 memset 就别乱用


by qdzxsyt @ 2024-07-14 10:34:48

帮忙改题的DALAO一定关注!!!!


by xzy_caiji @ 2024-07-14 10:39:22

@qdzxsyt 请用循环初始化数组


by hutao_262218926 @ 2024-07-14 10:41:34

sizeof有问题吧


by hutao_262218926 @ 2024-07-14 10:42:09

sizeof(f)


by jcf666 @ 2024-07-14 10:42:40

#include<bits/stdc++.h>
using namespace std;
int n,ans=-1e6;
int f[100100],num[100010],compare=0;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>num[i];
    }
    for(int i=1;i<=n;i++)f[i]=1;//改动处
    for(int i=2;i<=n;i++)
    {
        for(int j=1;j<i;j++)
        {
            if(num[i]>num[j])
            {                         
                f[i]=max(f[j]+1,f[i]);
            }                         
        }
    }
    for(int i=1;i<=n;i++)
    {                                 ans=max(f[i],ans);
    }
    cout<<ans;
    return 0;
}

by jcf666 @ 2024-07-14 10:43:22

这不就完了?主要还是memset用的有问题


by hutao_262218926 @ 2024-07-14 10:44:45

f[i]=1加输入循环里更简单


by jcf666 @ 2024-07-14 10:45:48

@hutao_262218926 也行,这样就不用多写一个for循环了


by hutao_262218926 @ 2024-07-14 10:49:56

memset(f,1,sizeof(f))结果是16843009,memset只能赋特定值


| 下一页