大巴车

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

http://www.nowcoder.com/questionTerminal/a776dfef53914c23a4271fc5fe608369

题解

题目难度:简单

知识点:数学逻辑、数组

分析:首先我们将原顺序放入members数组中,对于该分组输出问题,我们需要依次找到每次输出的起始下标和结束下标,可以根据memberCount/carCount的商m值找到每次输出的起始坐标,如第一次为mcarCount,第二次为(m-1)carCount当我们的m值变为-1时,所有分组的顺序都已全部写入辅助orders数组。同时考虑结束位置,对于第一组,其结束位置小标为memberCount-1,其余分组都为该组起始位置+carCount-1(每一辆车转满)。

当memberCount=8,carCount=3时,m=memberCount/carCount=2
图片说明

#include <iostream>
#define Maxn 100000
using namespace std;
int members[Maxn];
int orders[Maxn];
int main() {
    int memberCount, carCount;
    cin >> memberCount;
    cin >> carCount;
    for (int i = 0; i < memberCount; i++) {
        cin >> members[i];
    }
    int m,n;
    int falt=0;
    m=memberCount/carCount;
    int i=0;
    while(m>=0)
    { 
       if(falt==0) {
           for(int j=m*carCount;j<memberCount;j++) orders[i++]=members[j];
           falt=1;
       }
       else{
           for(int j=m*carCount;j<m*carCount+carCount;j++) orders[i++]=members[j];
       }
       m--;
    }
    for(int i=0;i<memberCount;i++)
    cout<<orders[i]<<endl;
    return 0;
}

【注】可以不使用辅助数组直接输出members[j]的值

全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务