程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++ c-oj 題聰明的員工怎麼做?

c++ c-oj 題聰明的員工怎麼做?

編輯:編程綜合問答
oj 題聰明的員工怎麼做?

題目描述
小新是一家公司的員工,每個員工都有一個編號。每天上班時,老板都讓員工排成一個隊伍。但是,每次老板都對隊伍的順序不滿意,於是老板重新編排新的隊伍順序,然後讓員工按順序排好。老板有特別要求,隊伍每次只能將其中一個人移動到隊頭。聰明的小新很快想到最少移動次數使得隊伍的順序跟老板指定的順序一樣。愚蠢的老板不清楚小新是怎麼做到的,聰明的你編寫程序告訴ta。

輸入
第一行是T(T<=10),代表數據的組數。
對於每組數據,第1行是一個整數n(2<=n<=30),代表員工的數量。第2行有n個數,代表員工一開始的隊伍順序的編號。第3行有n個數,代表老板要求的隊伍順序的編號。員工的編號為s(1<=s<=n),且不會重復。

輸出
輸出最少的移動次數。

樣例輸入
2
4
2 1 3 4
1 2 3 4
3
2 1 3
3 1 2
樣例輸出
1
2

最佳回答:


書本上都有的選擇排序。

 public class ChoiceSort {

    public static void _choiceSort(Integer[] a) {
        if (a == null || a.length <= 0) {
            return;
        }
        for (int i = 0; i < a.length; i++) {
            int min = i; /* 將當前下標定義為最小值下標 */

            for (int j = i + 1; j < a.length; j++) {
                if (a[min] > a[j]) { /* 如果有小於當前最小值的關鍵字 */
                    min = j; /* 將此關鍵字的下標賦值給min */
                }
            }
            if (i != min) {/* 若min不等於i,說明找到最小值,交換 */
                int tmp = a[min];
                a[min] = a[i];
                a[i] = tmp;
            }
        }
    }
}

 public static void main(String[] args) {
        // TODO Auto-generated method stub
         Integer[] list={49,38,65,97,76,13,27,14,10};
         //快速排序
        /* QuicSort qs=new QuicSort();
         qs.quick(list);*/
         //冒泡排序
        /* BubbleSort bs=new BubbleSort();
         bs.bubble(list);*/
         //選擇排序
         ChoiceSort._choiceSort(list);

         for(int i=0;i<list.length;i++){
             System.out.print(list[i]+" ");
         }
         System.out.println();
    }

xmt1139057136
xmt1139057136
zsc2014030403015
zsc2014030403015
zsc2014030403015
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved