YJK23333 @ 2024-03-22 02:38:42
AC代码:
#include <iostream>
using namespace std;
const int N = 1e5+4;
int n, ans, a[N], f[N];
int main()
{
cin >> n;
for(int i = 1 ; i <= n ; i++){
scanf("%d",&a[i]);
f[i] = 1;
}
for(int i = 2 ; i <= n ; i++){
for(int j = 1 ; j < i ; j++)
if(a[j] < a[i]) f[i] = max(f[i],f[j]+1);
ans = max(f[i], ans);
}
printf("%d",ans);
return 0;
}
经过修改后过了,原版的有时候能AC有时候只有20分,可能是面对不同的数据会有错误。
#include <iostream>
using namespace std;
int main()
{
int n, ans;
cin >> n;
int a[n+2], f[n+2];
for(int i = 1 ; i <= n ; i++){
scanf("%d",&a[i]);
f[i] = 1;
}
for(int i = 2 ; i <= n ; i++){
for(int j = 1 ; j < i ; j++)
if(a[j] < a[i]) f[i] = max(f[i],f[j]+1);
ans = max(f[i], ans);
}
printf("%d",ans);
return 0;
}
唯一区别是定义数组的时候定义的长度,感觉这个可能对结果有影响?
by Bingxiu @ 2024-03-22 07:03:14
@YJK23333 不是数组大小问题,是局部变量不初始化是随机值(看你电脑上次调用这个内存修改为了什么值)
by zjpwdyf @ 2024-03-22 07:04:02
@YJK23333 不是数组的问题,而是第二份代码中 ans 没有初始化
by YJK23333 @ 2024-03-22 16:41:37
@Bingxiu 好的,谢谢,我试了一下确实没问题了。
by YJK23333 @ 2024-03-22 16:41:52
@zjpwdyf 好的,谢谢,我试了一下确实没问题了。