数据范围好小。。。
题目中没说要升序降序,不过样例解释里可以看出是要升序。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int a[11],b[11],visit[11]; 5 int main(){ 6 int n; cin>>n; 7 for(int i=0;i<n;i++){ 8 cin>>a[i]; 9 b[i]=a[i]; 10 } 11 sort(b,b+n); 12 for(int i=0;i<n;i++) 13 for(int j=0;j<n;j++) 14 if(a[i]==b[j]&&i!=j) 15 for(int k=min(i,j);k<=max(i,j);k++) visit[k]=1;///把它现在的位置和它应该在的位置都标记,这个区间不能分 16 17 int ans=0; 18 for(int i=0;i<n;i++)//为0的位置可以自成一块,不能分的部分成一块 19 if(visit[i]==0||(visit[i]==1&&visit[i+1]==0)) ans++; 20 21 cout<<ans<<endl; 22 return 0; 23 }