当前位置: 首页 > news >正文

刷题日记day15-按身高和体重排队


文章目录

  • 前言
  • 一、问题复述
  • 二、解法及其思想
  • 三、代码实现及细节


前言

简单写个日记记录我刷了什么题以及心得总结。


一、问题复述

  • 学生按编号进行标识,对他们进行按身高和体重的低到高排列。排列队则:先按身高排,身高同按照体重排。身高体重都相同再按照编号排。
  • 输入:
    • 第一行:学生个数
    • 第二行:所有学生身高,以空格分隔
    • 第三行:所有学生体重,以空格分隔
  • 输出:按编号的排列结果,从1开始编号,以空格分隔

二、解法及其思想

  • 简单的自定义排序和数据处理。

三、代码实现及细节

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;

struct info {
	int num;
	int height;
	int weight;
	info(int num,int h, int w) :num(num),height(h), weight(w) {}
};

bool compare(info a, info b) {
	if (a.height != b.height) {
		return a.height < b.height;
	}
	else if(a.weight!=b.weight){
		return a.weight < b.weight;
	}
	else {
		return a.num < b.num;
	}
}
int main() {
	int n;
	cin >> n;
	vector<int> hs;
	vector<int> ws;
	for(int i = 0; i < n; i++) {
		int val;
		cin >> val;
		hs.push_back(val);
	}
	for (int i = 0; i < n; i++) {
		int val;
		cin >> val;
		ws.push_back(val);
	}
	vector<info> inf;
	for (int i = 0; i < n; i++) {
		//emplace_back可直接构造
		inf.emplace_back(i+1,hs[i], ws[i]);
	}
	sort(inf.begin(), inf.end(), compare);
	for (auto e : inf) {
		cout << e.num << " ";
	}
	return 0;
}
http://www.dtcms.com/a/100501.html

相关文章:

  • swagger问题解决
  • 【常春藤盟校的「社会资本交易所」本质】
  • 什么是Java值传递和引用传递?
  • prism wpf 入门
  • 自动化部署核心概念与实践
  • Redis 哈希表结构详解
  • QtAV入门
  • 两数之和-力扣
  • 【Redis】基础1——基本概念,基本数据结构
  • 如何快速搭建高可用 Easysearch 集群 ?Ubuntu 多节点部署指南
  • 基于WMI与WinRM的横向移动技术深度解析
  • C语言函数递归
  • 程序化广告行业(44/89):岗位职责与RTB竞价逻辑深度解析
  • 算法练习篇目:删除有序数组中的重复项
  • Spring Cloud Alibaba 技术全景与实战指南
  • 多路径软件multipath配置详解
  • 【Linux】线程互斥同步
  • 【力扣hot100题】(018)螺旋矩阵
  • 借助FastAdmin和uniapp,高效搭建AI智能平台
  • 基于Python的火车票管理系统的设计与实现
  • 使用jieba库进行TF-IDF关键词提取
  • 深入解析C++继承机制:从基础到多态实现
  • C++ STL常用算法之常用集合算法
  • 从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.3.2参数高效微调:LoRA与适配器(Adapter)技术
  • 子网划分浅度解析
  • Kotlin基础知识学习(五)
  • Set,Map,WakeSet,WakeMap
  • 虚拟pinctrl驱动
  • ZGC初步了解
  • 【小技巧】如何查看容器的启动参数