#include<bits/stdc++.h> using namespace std; const int N=1e4+10; int n; bool flag; int res; int a[N];

int main() { cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; }

for(int i=0;i<n;i++)     {
    for(int j=i;j<n;j++)         {
        int len = j - i + 1;
        sort(a+i,a+j+1);
        flag=true;
        for(int k=i+1;k<=j;k++)             {
            if(a[k]!=a[k-1]+1) {
                flag=false;
                break; // 如果不连续,直接跳出循环
            }
        }
        if(flag && len == a[j] - a[i] + 1) // 判断是否连续并且长度匹配
            res++;
    }
}
      
cout<<res<<endl;
      
return 0;

}

主要修改点包括:

  1. 在判断连续的循环中,如果发现不连续,直接跳出循环,不再继续判断。

  2. 在判断连续的循环中,增加了一个判断条件,即长度是否匹配,如果长度不匹配,则不算连续。

  3. 修改了代码的排版格式,使得代码更加清晰易读。

C++ 代码优化:查找连续子序列数量

原文地址: https://www.cveoy.top/t/topic/m6Mk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录