信息奥赛一本通(1310:【例2.2】车厢重组)
1310:【例2.2】車廂重組
時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 18621 ??? 通過數: 11419
【題目描述】
在一個舊式的火車站旁邊有一座橋,其橋面可以繞河中心的橋墩水平旋轉。一個車站的職工發現橋的長度最多能容納兩節車廂,如果將橋旋轉180度,則可以把相鄰兩節車廂的位置交換,用這種方法可以重新排列車廂的順序。于是他就負責用這座橋將進站的車廂按車廂號從小到大排列。他退休后,火車站決定將這一工作自動化,其中一項重要的工作是編一個程序,輸入初始的車廂順序,計算最少用多少步就能將車廂排序。
【輸入】
有兩行數據,第一行是車廂總數N(不大于10000),第二行是N個不同的數表示初始的車廂順序。
【輸出】
一個數據,是最少的旋轉次數。
【輸入樣例】
4 4 3 2 1【輸出樣例】
6【參考代碼】
#include <stdio.h>
#define N 10010
int a[N];
int main()
{
? ? int i,j,n,s=0,t;
? ? scanf("%d",&n);
? ? for(i=0;i<n;i++) ? ? ? ? ?//輸入n個車廂號?
? ? ?? ?scanf("%d",&a[i]);
? ? for(i=0;i<n-1;i++) ? ? ? ?//冒泡排序?
? ? {
? ? ?? ?for(j=0;j<n-1-i;j++)
? ? ?? ?{
? ? ?? ??? ?if(a[j]>a[j+1]) ? //判斷車廂號是否逆序?
? ? ?? ??? ?{
? ? ?? ??? ??? ?t=a[j];
? ? ?? ??? ??? ?a[j]=a[j+1];
? ? ?? ??? ??? ?a[j+1]=t;
? ? ?? ??? ??? ?s++; ? ? ? ? ?//統計車廂旋轉的次數?
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?printf("%d\n",s); ? ? ? ? //最少的旋轉次數?
? ? return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1310
?
總結
以上是生活随笔為你收集整理的信息奥赛一本通(1310:【例2.2】车厢重组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(1121:计算矩阵边缘
- 下一篇: 信息学奥赛一本通(2030:【例4.16