穿胖次的夏雨来 2019-12-07 09:50 采纳率: 16.7%
浏览 557

C++题目,还原数列,知道每个数之前有多少个比它小的数,求原先的数列,求大神解答!

【问题描述】
给定1~N的某个排列,可以很容易求出每个数之前有多少个比它小的数。
但反过来,如果知道每个数之前有多少个比它小的数,能否求出原先的排列呢?

【输入数据】(sequence.in)

第一行,N(1<=N<=100)

第二行,N个数,分别表示每个数之前有多少个比它小的数。

【输出数据】(sequence.out)

一行,N个数为所求的原先排列

输入样例

4

0 1 2 1

【样例输出】

1 3 4 2

  • 写回答

3条回答 默认 最新

  • 非弋 2019-12-15 13:10
    关注
    int num = 6;    // N
    vector<int> vecNum(num);    // 1, 2, ..., N 
    for (int i = 0; i < num; i++){
        vecNum[i] = i + 1;
    }
    
    vector<int> vecInput(num);  // input
    vecInput[0] = 0;
    vecInput[1] = 0;
    vecInput[2] = 1;
    vecInput[3] = 2;
    vecInput[4] = 4;
    vecInput[5] = 0;
    
    vector<int> vecOutput(num); // output
    vector<int>::reverse_iterator itOutput = vecOutput.rbegin();
    for (vector<int>::reverse_iterator itInput = vecInput.rbegin(); itInput != vecInput.rend(); itInput++) {
        *itOutput++ = vecNum[*itInput];
        vecNum.erase(vecNum.begin() + *itInput);
    }
    
    // print
    for (vector<int>::iterator it = vecOutput.begin(); it != vecOutput.end(); it++) {
        cout << *it << endl;
    }
    
    
    
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?