C++ 蒟蒻在线求助大佬!
查看原帖
C++ 蒟蒻在线求助大佬!
596431
Rick206楼主2022/7/16 17:17

第四个点WA了 求助大佬帮忙看一下码的思路有什么问题:

#include <iostream>
using namespace std;

int main(){
    int n,i,s=0;//s为连号的长度
    cin>>n;
    
    int A[n+10];
    for(i=0;i<n;i++)//输入数组
    cin>>A[i];
    
    int rec_first=0,rec_end=0,rec=0;//每一个连号的开头下标、结尾下标和长度
    for(i=1;i<n-1;i++)
    if( A[i]-A[i-1]==1 && A[i+1]-A[i]==1 ){
        if( A[i-1]-A[i-2]!=1 && A[i]-A[i-1]==1)//找到开头下标的位置
            rec_first=i-1;
        if(A[i+1]-A[i]==1 && A[i+2]-A[i+1]!=1){
            rec_end=i+1;//找到结尾下标的位置
            if(rec_end-rec_first+1>=rec){//计算连号的长度并与之前的连号相比较
                s=rec_end-rec_first+1;
                rec=s;
            }
        }
    }
    
    if(s) cout<<s<<endl;//如果最长连号含有3个及3个以上元素 那么就输出这个长度
    else{//如果最长连号只有两个元素或者没有连号
        for(i=0;i<n-1;i++){
            if(A[i]-A[i+1]==-1){
            s=2;
            break;
            }
        }
        cout<<s<<endl;
    }
    
    return 0;
}
2022/7/16 17:17
加载中...