import java.util.Scanner;
public class ReduceInversionCount {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String inStr ;
Integer[] num ;
while(in.hasNext()){
inStr = in.nextLine();
num = tranString2IntArr(inStr);
int count = inversionCount(num, num.length);
if(count == 0){System.out.println(0);continue;}
for(int i = 0 ;i < num.length ; i++){
for(int j = i+1 ; j < num.length ; j++){
if(num[i] > num[j]){ //发现逆序对
swap(num,i,j);
int tempcount = inversionCount(num, num.length);
count = count < tempcount ?count:tempcount;
swap(num,i,j);
}
}
}
System.out.println(count);
}
}
private static void swap(Integer[] num, int i, int j) {
int temp = num[i];
num[i] = num[j];
num[j] =temp;
}
private static Integer[] tranString2IntArr(String inStr) {
String[] strs = inStr.split(",");
Integer result[] = new Integer[strs.length];
for(int i = 0 ;i < strs.length ; i++)
result[i] = Integer.parseInt(strs[i]);
return result;
}
private static int inversionCount(Integer[] num,int n){
int count = 0 ;
for(int i = 0 ;i < n ;i++)
for(int j = i+1 ;j < n; j++)
if(num[i] > num[j]) count++;
return count ;
}
}
微软2014实习生及秋令营技术类职位在线测试: Reduce inversion count
最新推荐文章于 2017-06-09 10:11:00 发布