299 - Train Swapping

题目大意
题目原文 http://uva.onlinejudge.org/external/2/299.pdf

火车的排序
题目要求将写有数字1—L的火车车厢按顺序排列好,求需要的次数。这题就是求一堆数字用冒泡排序法排序所需要的交换次数。所以按冒泡排序法计数一下即可。

附上代码:

View Code
 1 #include<stdio.h>
 2 int main()
 3 {
 4  int n,l,i,j,*p1,*p2,k,num;
 5  scanf("%d",&n);
 6  while(n--)
 7  {
 8   scanf("%d",&l);
 9   int a[l];
10   p1=a;
11   p2=a;
12   for(i=0;i<l;i++)
13   {
14    scanf("%d",&a[i]);
15   } 
16   num=0;
17   for(i=0;i<l;i++)
18   {
19    p2=p1;
20    p2++;   
21    for(j=l-i-1;j>0;j--)
22    {
23     if(*p2<*p1)
24     {
25      k=*p1;
26      *p1=*p2;
27      *p2=k;
28      num++;//每交换一次计数一次。
29     }  
30     p2++;
31    }     
32    p1++;        
33   } 
34   printf("Optimal train swapping takes %d swaps.\n",num);
35  }
36  return 0;
37 }

 

posted on 2013-02-10 22:53  T^T  阅读(195)  评论(0编辑  收藏  举报

导航