1. 程式人生 > >猿輔導2019校招技術類筆試題 編程題1:大巴車(數組分塊,按塊翻轉,塊內不變

猿輔導2019校招技術類筆試題 編程題1:大巴車(數組分塊,按塊翻轉,塊內不變

nbsp -s tro 筆試 個人 先後 ati ron static

大巴車(數組分塊,按塊翻轉,塊內不變

某天猿輔導 HR 組織大家去漂流,早上,參加團建的同學都到齊了,並且按到達公司的先後順序排好隊了。

由於員工太多,一個大巴車坐不下,需要分多個車,車是足夠的,但所有人需要按一定順序上車,按如下規則安排上車的順序:

假設大巴車容量為 m,從隊首開始,每 m 個人分成一個小組,每個小組坐一輛車。 同時只有一個車打開車門供員工上車。 小組之間按從隊尾到隊首順序依次上車,同一小組內先到的同學先上,求所有人上車的順序。 例如: 員工數 8, 車容量 3, 員工到達順序為 1 2 3 4 5 6 7 8, 3個人一個小組,分三個小組, 小組一: 1, 2, 3, 小組二: 4, 5, 6,小組三: 7,8。
小組上車順序為: 小組三,小組二,小組一 。 所有員工上車順序為 7 8 4 5 6 1 2 3
輸入描述:
第一行: 員工數和大巴容量
第二行: 所有員工工號(按到達順序)

輸出描述:
員工編號

輸入例子1:
5 3
1 3 5 2 4

輸出例子1:
2 4 1 3 5



Java 遞歸解法如下:
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sca = new Scanner(System.in);
        
int m = sca.nextInt(); int n = sca.nextInt(); int[] arr = new int[m]; for (int i = 0; i < arr.length; i++) { arr[i] = sca.nextInt(); } f(arr,0,m,n); } public static void f(int[] arr,int temp,int m,int n){ if(temp<m-n) f(arr,temp
+n,m,n); for(int i = temp;i<temp+n & i<arr.length;i++){ if(i!=n*((m+n-1)/n-1)) System.out.print(" "); System.out.print(arr[i]); } } }

猿輔導2019校招技術類筆試題 編程題1:大巴車(數組分塊,按塊翻轉,塊內不變