您的位置:首页 > 编程语言 > C语言/C++

微软2014实习生及秋令营技术类职位在线测试-3.Reduce inversion count.cpp

2014-04-14 10:51 387 查看
这题没做对,也不知道错在哪里。

思路是:

先把整数都放到数组里

计算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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐