C++ 代码优化:查找连续子序列数量
#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;
}
主要修改点包括:
-
在判断连续的循环中,如果发现不连续,直接跳出循环,不再继续判断。
-
在判断连续的循环中,增加了一个判断条件,即长度是否匹配,如果长度不匹配,则不算连续。
-
修改了代码的排版格式,使得代码更加清晰易读。
原文地址: https://www.cveoy.top/t/topic/m6Mk 著作权归作者所有。请勿转载和采集!