这题中车厢的调动次数正好和排序的交换次数一致,所以只要进行排序并记录就可以了
View Code
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int n,L,l[100],i,cs,j,temp; 6 scanf("%d",&n); 7 while(n--) 8 { 9 scanf("%d",&L); 10 cs=0; 11 for(i=0;i<L;i++) 12 scanf("%d",&l[i]); 13 for(j=1;j<L;j++) 14 for(i=0;i<L-j;i++) 15 if(l[i]>l[i+1]) 16 { 17 temp=l[i]; 18 l[i]=l[i+1]; 19 l[i+1]=temp; 20 cs++;//他们交换的次数正好与客车厢调动的次数相等 21 } 22 printf("Optimal train swapping takes %d swaps.\n",cs); 23 } 24 system("pause"); 25 return 0; 26 }