这题没做对,也不知道错在哪里。
思路是:
先把整数都放到数组里
计算inversion个数
测了很多组都没错
#include<iostream> #include <string> #include<string.h> #include<algorithm> #include<sstream> using namespace std; int calucate(int *a,int len){ int minx=0; for(int i=0;i<len;i++){ for(int j=i+1;j<len;j++){ if(a[i]>a[j]) minx++; } } return minx; } int main(){ string temp1; while(getline(cin,temp1)){ int num[55],k=0,fuhao=0; for(int i=0;i<temp1.size();){ num[k]=0; while(i<temp1.size()&&temp1[i]!=‘,‘){ if(temp1[i]==‘-‘){ fuhao=1; i++; } num[k]=num[k]*10+temp1[i]-‘0‘; i++; } if(fuhao){ fuhao=0; num[k]=-num[k]; } k++; i++; } int minx=calucate(num,k); for(int i=0;i<k;i++){ for(int j=i+1;j<k;j++){ swap(num[i],num[j]); int temptemp=calucate(num,k); if(minx>temptemp) minx=temptemp; swap(num[j],num[i]); } } cout<<minx<<endl; } }
微软2014实习生及秋令营技术类职位在线测试-3.Reduce inversion count.cpp,布布扣,bubuko.com
微软2014实习生及秋令营技术类职位在线测试-3.Reduce inversion count.cpp
原文:http://www.cnblogs.com/royjwy/p/3663525.html