当前位置:   article > 正文

0024-华为OD机考:身高--体重排序_华为od机试真题-按身高和体重排队

华为od机试真题-按身高和体重排队

身高体重-排序

题目描述

身高从低到高
身高相同体重从轻到重
体重相同维持原来顺序

样例:

输入
4
100 100 120 130
40 30 60 50
    输出:
    2 1 3 4
输入
3
90 110 90
45 60 45
输出
    1 3 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

C++ 代码

//
// Created by HANWENKE on 2022/9/5.
//
#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>
#include <map>
using namespace  std;
static bool cmp(pair<int,int>&a,pair<int,int >&b){
    if(a.first>b.first){
        //如果a的heigh大于b.height就要将b放在前
        return false;
    }else if(a.first==b.first&&a.second<b.second){
        //如果身高相同--那么就要将体重体重小的放到前面
        return true;
    }else if(a.second==b.second){
        //如果体重相同则维持原来的顺序
        return false;
    }
    return true;
}
int main(){
    int n;
    cin>>n;
    vector<pair<int,int>>arr1(n);
    for(int i=0;i<n;i++){
        int height;
        cin>>height;
        arr1[i].first=height;
    }
    map<int ,int>ismap;
    for(int i=0;i<n;i++){
        int weight;
        cin>>weight;
        arr1[i].second=weight;
        ismap[i+1]=weight;

    }
    sort(arr1.begin(),arr1.end(),cmp);
    for(auto &x:arr1){
         for(auto it=ismap.begin();it!=ismap.end();++it){
             if((*it).second==x.second){
                 cout<<(*it).first<<" ";
                 ismap.erase(it);
                 //在这里一定要跳出循环--因为这里删除了一个元素-如果不跳出循环迭代器就会失效
                 break;
             }
         }
    }
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/442123
推荐阅读
相关标签
  

闽ICP备14008679号