题目如下
我的代码如下
#include<stdio.h>
int n;
int i;
int a[100010];
int cache[100010];
int result[100010];
int c;
int r;
int count;
void add(int m){
if(m>cache[c]){
c++;
cache[c]=m;
}else{
if(c>r){
for(i=1;i<=c;i++){
result[i]=cache[i];
}
r=c;
}
c=1;
cache[c]=m;
}
// printf("%d测试\n",m);
}
int main(){
//初始化线性表
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
/*//测试是否输入
for(i=0;i<=n;i++){
printf("%d ",a[i]);
}*/
//初始化递增序列
//递增序列第一个设为0
//目的是为了如果第二个是递增序列的开始
//这样直接跟第一个比较就行
result[0]=0;
cache[0]=0;
c=0;
r=0;
count=0;
while(count<n){
add(a[count]);
count++;
}
//输出
if(r!=0){
//有多个子序列
for(i=1;i<r;i++){
printf("%d ",result[i]);
}
printf("%d",result[r]);
}else{
//只有一个子序列
for(i=1;i<c;i++){
printf("%d ",cache[i]);
}
printf("%d",cache[c]);
}
return 0;
}
最终的测试结果
请问各位大佬们我的代码为什么最后一个测试点是错的?