PAT TOP顶级 1027 Larry and Inversions (35 分)

暴力法,拿了20分,有没有同学可以改进的。。欢迎评论?

#include <iostream>
#include <algorithm>
#include <string.h>
#include <map>
using namespace std;

int cnt,n,flag;
vector <int> a,b;

int getni(vector <int>a){
	for(int i=0;i<n-1;i++){
		for(int j=i+1;j<n;j++){
			if(a[i]>a[j])  cnt++;
		}
	}
	return cnt;
}

void reverse(vector <int>&a,int i,int j){
	while(i!=j){
		int temp = a[i];
		a[i]=a[j];
		a[j]=temp;
		i++;
		if(i!=j) j--;	
	}	
}

int main(){
	cin>>n;
	a.resize(n);
	b.resize(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	
	for(int i=0;i<n;i++){
		if(!flag){
			cout<<1;
			flag =1;
		} else cout<<" "<<1;
		
		for(int j=i+1;j<n;j++){
			b=a;
			reverse(b,i,j);
			cnt =0;
			cout<<" "<<getni(b);
		}	
	}
		
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36671300/article/details/85524584
今日推荐