只加了check函数的返回值,判断 改之前
#include<bits/stdc++.h>
using namespace std;
int n,num[50010];
int temp[50010];
int ans;
void check(int l,int r){
for(int i=l;i<=r;i++){
temp[i]=num[i];
}
sort(temp+l,temp+r+1);
for(int i=l;i<r;i++){
if(temp[i+1]-temp[i]==1) {
continue;
}
else return ;
}
ans++;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
}
for(int i=1;i<n;i++){
for(int j=i+1;j<=n;j++){
check(i,j);
}
}
cout<<ans+n;
return 0;
}
改后
#include<bits/stdc++.h>
using namespace std;
int n,num[50010];
int temp[50010];
int ans;
int check(int l,int r){
for(int i=l;i<=r;i++){
temp[i]=num[i];
}
sort(temp+l,temp+r+1);
for(int i=l;i<r;i++){
if(temp[i+1]-temp[i]==1) {
continue;
}
else{
return 0;
}
}
ans++;
return 1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
}
for(int i=1;i<n;i++){
for(int j=i+1;j<=n;j++){
if(check(i,j)==0) break;
}
}
cout<<ans+n;
return 0;
}