感觉是一个做法但是只改了一点,就0分了
查看原帖
感觉是一个做法但是只改了一点,就0分了
832977
Submerge69楼主2024/3/5 17:23

只加了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;
}
2024/3/5 17:23
加载中...