排序检索 299 train swapping

来源:互联网 发布:pudn程序员 编辑:程序博客网 时间:2024/06/07 08:55

题目大意:相邻元素翻转,直到数组升序排列

解题过程:一次AC

正确代码:

# include <cstdio># include <cstdlib># include <ctime># include <cmath># include <iostream># include <fstream># include <cstring># include <string>//*#define fin cin#define fout cout//*/using namespace std;/*ifstream fin("in.txt");ofstream fout("out.txt");//*/int cmp(const void*a,const void*b){return *(int*)a-*(int*)b;}int order[100];int car[100];int main(){int n,l;fin>>n;int cases=0;while(cases<n){cases++;int num=0;bool tochange=true;fin>>l;for(int i=0;i<l;i++){fin>>car[i];order[i]=car[i];} qsort(order,l,sizeof(order[0]),cmp);for(int i=0;i<l;i++){if(order[i]!=car[i]){int target;for(int j=i;j<l;j++){if(car[j]==order[i]){target=j;//fout<<"待调整位置:"<<target<<"调整到位置:"<<i<<endl;num+=j-i;break;}}for(int j=i;j<=target;j++){int temp=car[j];car[j]=car[target];car[target]=temp;}}}fout<<"Optimal train swapping takes "<<num<<" swaps."<<endl;} return 0; } 

0 0
原创粉丝点击