首页 > 试题广场 >

大巴车(数组分块,按块翻转,块内不变)

[编程题]大巴车(数组分块,按块翻转,块内不变)
  • 热度指数:5747 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
某天猿辅导 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

#include <iostream>

int main() {
    int memberCount, carCount;
    std::cin >> memberCount;
    std::cin >> carCount;
    
    int* members = new int[memberCount];
    for (int i = 0; i < memberCount; i++) {
        std::cin >> members[i];
    }
    

    // TODO: 按规则调整顺序
    while(true)
    {
        // TODO: 输出,注意有空格隔开
        std::cout << orders[i];
    }
    
    delete[] members;
    delete[] orders;
}


输入描述:
第一行: 员工数和大巴容量
第二行: 所有员工工号(按到达顺序)


输出描述:
员工编号
示例1

输入

5 3
1 3 5 2 4

输出

2 4 1 3 5
头像 白伟仝
发表于 2020-05-10 17:36:58
import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.ne 展开全文
头像 牛客444857323号
发表于 2023-08-29 16:28:50
n2 = int(input().split(' ')[1]) l1 = input().split(' ') l2 = [l1[i:i+n2] for i in range(0,len(l1),n2)] print(' '.join([' '.join(j) for j in l2[::-1] 展开全文
头像 牛客题解官
发表于 2020-06-05 15:51:24
题解 题目难度:简单 知识点:数学逻辑、数组 分析:首先我们将原顺序放入members数组中,对于该分组输出问题,我们需要依次找到每次输出的起始下标和结束下标,可以根据memberCount/carCount的商m值找到每次输出的起始坐标,如第一次为mcarCount,第二次为(m-1)carCou 展开全文
头像 牛客289281343号
发表于 2020-04-30 23:11:30
解题思路:首先通过员工数n和大巴车容量m求出小组数x和最后一辆大巴车上的人数y;然后从最后一组开始,依次输出每个组中的元素。要注意的是元素索引的表示,这里我用i表示组数,i的初始值为x,b表示组内偏移,b的初始值为0,因此索引表示为i m+bimport java.util.;public cla 展开全文
头像 牛客284387922号
发表于 2022-05-26 17:18:48
//员工数 var m = parseInt(input.split(' ')[0]); //console.log(m); //大巴容量 var c = parseInt(input.split(' ')[1]); //console.log(c); //组数 var group = parse 展开全文
头像 执着的牧马人
发表于 2022-07-11 21:17:56
def count_input():     a,b=[int(i) for i in input().split(" ")]     arr=[int(id) 展开全文