299 - Train Swapping

来源:互联网 发布:nginx 提高并发数 编辑:程序博客网 时间:2024/05/16 15:15

简单排序题,求交换的最少次数


#include <stdio.h>int count,n;int carriage[60];int find(int x){for(int i=1;i<=n;i++)if(carriage[i]==x)return i;return -1;}void move(int x,int y){for(int i=y-1;i>=x;i--){carriage[i+1]=carriage[i];count++;}}int main(){int m;scanf("%d",&m);for(int cas=1;cas<=m;cas++){count=0;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&carriage[i]);for(int i=1;i<n;i++){int pos=find(i);if(pos!=i){move(i,pos);carriage[i]=i;}}printf("Optimal train swapping takes %d swaps.\n",count);}return 0;}