信奥赛一本通:数据排序(合影效果、病人排队、明明的随机数、单词排序、出现次数超过一半的数、统计字符数)

数据排序

    • 1182:合影效果
    • 1183:病人排队
    • 1184:明明的随机数
    • 1185:单词排序
    • 1186:出现次数超过一半的数
    • 1187:统计字符数

1182:合影效果

在这里插入图片描述
由题目可知,n个人有 性别与身高两种属性,则我们用结构体去做。

  1. 定义结构体,并输入值。
struct Student{
	string sex;
	double high;
};
int main(){
	Student stu[105];
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>stu[i].sex>>stu[i].high;
	}
  1. sort排序,依据男在左,女在右。当性别一致,则按身高排序,男生身高从小到大,女生则从高到低。
bool cmp(Student x,Student y){
	if(x.sex!=y.sex){
		return x.sex>y.sex;
	}
	else{
		if(x.sex=="male"){
			return x.high<y.high;
		}
		return x.high>y.high;
	}
}
  1. 最后输出
    总代码:
//1182:合影效果
#include<bits/stdc++.h>
using namespace std;
struct Student{
	string sex;
	double high;
};
bool cmp(Student x,Student y){
	if(x.sex!=y.sex){
		return x.sex>y.sex;
	}
	else{
		if(x.sex=="male"){
			return x.high<y.high;
		}
		return x.high>y.high;
	}
}
int main(){
	Student stu[105];
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>stu[i].sex>>stu[i].high;
	}
	sort(stu,stu+n,cmp);
	for(int i=0;i<n;i++){
		printf("%.2f ",stu[i].high);
	}
	return 0;
}

1183:病人排队

在这里插入图片描述
根据题目:我们可分为老年人看病 与 非老年人看病 的排队顺序。病人有病号与年龄两个属性。老规矩用结构体。

  1. 一个病人要有ID、年龄、排号顺序。定义结构体并输入;
struct Per{
	string id;
	int age,num;
};

int main(){
	Per p[105];
	Per a[105], b[105]; //a是老年人 b是非老年人
	int n,len1=1,len2=1;	
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>p[i].id>>p[i].age;
	}
  1. 通过判断年龄>=60,进行分类,老年人a数组, 非老年人b数组。
	for(int i=1;i<=n;i++){
		if(p[i].age>=60){
			a[len1].num = len1;
			a[len1].age = p[i].age;
			a[len1++].id = p[i].id;
		}
		else{
			b[len2++].id = p[i].id;
		}
	}

3.对a数组老年人进行sort排序,年龄从大到小,当年龄相同按排号登记顺序先后。

bool cmp(Per x,Per y){
	if(x.age!=y.age) return x.age>y.age;
	else if(x.age==y.age) return x.num<y.num;
}

sort(a+1,a+1+len1,cmp);

4.排完序后,进行输出,先输出老年人再输出非老年人。

for(int i=1;i<len1;i++) cout<<a[i].id<<endl;
for(int j=1;j<=len2;j++) cout<<b[j].id<<endl;

总代码:

//1183:病人排队
#include<bits/stdc++.h>
using namespace std;
struct Per{
	string id;
	int age,num;
};
bool cmp(Per x,Per y){
	if(x.age!=y.age) return x.age>y.age;
	else if(x.age==y.age) return x.num<y.num;
}
int main(){
	Per p[105];
	Per a[105], b[105];
	int n,len1=1,len2=1;	
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>p[i].id>>p[i].age;
	}
	for(int i=1;i<=n;i++){
		if(p[i].age>=60){
			a[len1].num = len1;
			a[len1].age = p[i].age;
			a[len1++].id = p[i].id;
		}
		else{
			b[len2++].id = p[i].id;
		}
	}
	sort(a+1,a+1+len1,cmp);
	for(int i=1;i<len1;i++) cout<<a[i].id<<endl;
	for(int j=1;j<=len2;j++) cout<<b[j].id<<endl;
	return 0;
} 

1184:明明的随机数

在这里插入图片描述在这里插入图片描述
由题目可知,去重与排序,我们可用 “桶排序” 做,很方便。

  1. 统计桶的数量,这样每个桶的值只输出一次,那就不会有重复的!
#include<bits/stdc++.h>
using namespace std;
int a[10000],b[10000]; //默认数组值0 
int main(){
	//4.桶排序
	int n,x,cnt=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x; // 4 4 5 9 
		a[x]=a[x]+1; //统计桶的数量 
	} 
  1. 判断有桶号,只执行一次,就可以去重
	for(int i=0;i<1000;i++) {
		if(a[i]>0){ //有数量 
			b[cnt++]=i; //b去重 排好序 
		}
	}
  1. 最后输出个数与值。
    总代码:
#include<bits/stdc++.h>
using namespace std;
int a[10000],b[10000]; //默认数组值0 
int main(){
	//4.桶排序
	int n,x,cnt=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x; // 4 4 5 9 
		a[x]=a[x]+1; //统计桶的数量 
	} 
	for(int i=0;i<1000;i++) {
		if(a[i]>0){ //有数量 
			b[cnt++]=i; //b去重 排好序 
		}
	}
	cout<<cnt<<endl;
	for(int i=0;i<cnt;i++){
		cout<<b[i]<<" ";
	} 
	return 0;
}

1185:单词排序

在这里插入图片描述在这里插入图片描述
由题目可知,需要输入多个字符串,我们可以定义字符串的数组s进行输入。
用到一维数组的输入,排序我们直接用sort即可。
但是我们重复的只能输出一次,那排序后,重复的单词会在相邻位置,只要判断数组前一个与后一个的值不等就存到另外一个数组ss。
遍历完所有字符串就,输出数组ss。

//1185:单词排序
#include<bits/stdc++.h>
using namespace std;
int main(){
	int i=0,k=0;
	string s[105],ss[105];
	while(cin>>s[i]){
		i++;
	}
	sort(s,s+i);
	for(int j=1;j<i;j++){
		if(s[j-1]!=s[j]) ss[k++]=s[j-1];
	}
	if(s[i-2]!=s[i-1]) ss[k++] = s[i-1];
	for(int i=0;i<k;i++){
		cout<<ss[i]<<endl;
	}
	return 0;
} 
//1185:单词排序
#include<bits/stdc++.h>
using namespace std;
int main(){
	int i=0,k=0;
	string s[105];
	while(cin>>s[i]){
		i++;
	}
	sort(s,s+i);
	for(int j=1;j<=i;j++){
		if(s[j-1]!=s[j]){
			cout<<s[j-1]<<endl;
		}
	}
	return 0;
} 

1186:出现次数超过一半的数

在这里插入图片描述在这里插入图片描述
通过题目可知,我们要找次数超过一半的数,那我们要统计每个数的次数,可用桶排序;但要注意,数组的值是有-50的,所以我们可以让每个数组编号+50再统计。

int x,b[1005]={0};
int main(){
	int n,flag=0;
	cin>>n; 
	for(int i=0;i<n;i++){
		cin>>x;
		b[x+50]++; //注意数值有负 
	}

统计完只要在0到1000值内判断,数组值>n/2,就可以输出 编号值-50。
注意细节,要是没有满足if条件则没有找到,要输出no。

//1186:出现次数超过一半的数
#include<bits/stdc++.h>
using namespace std;
int x,b[1005]={0};
int main(){
	int n,flag=0;
	cin>>n; 
	for(int i=0;i<n;i++){
		cin>>x;
		b[x+50]++; //注意数值有负 
	}
	for(int i=0;i<1000;i++){
		if(b[i]>n/2){
			cout<<i-50<<endl;
			flag=1; 
			break;
		}
	}
	if(flag==0){
		cout<<"no"<<endl;
	}
	return 0;
} 

1187:统计字符数

在这里插入图片描述
统计个数,现在我们可以用桶排序方便。统计完每个字母的次数,我们在从a到z判断哪个字母的次数最多,找出来最大值。

//1187:统计字符数
#include<bits/stdc++.h>
using namespace std;
int b[1000];
int main(){
	string s;
	char c;
	int max=0;
	
	cin>>s;
	for(int i=0;i<s.size();i++){
		b[s[i]]++;	
	} 
	for(int i='a';i<='z';i++){
		if(max<b[i]){
			max = b[i]; //记录数量最大值 
			c=i; 
		}
	}
	cout<<c<<" "<<max<<endl;
	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/103355.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch实践:ELK+Kafka+Beats对日志收集平台的实现

可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎&#xff0c;它还提供了分布式的多用户能力&#xff0c;实时的分析&#xff0c;以及对复杂搜索语句的处理能力&#xff0c;使其在众多场景下&#xff0c;如企业搜索&#xff0c;日志和事件数据分析等…

PDF Reader Pro v2.9.8(pdf编辑阅读器)

PDF Reader Pro是一款PDF阅读和编辑软件&#xff0c;具有以下特点&#xff1a; 界面设计简洁&#xff0c;易于上手。软件界面直观清晰&#xff0c;用户可以轻松浏览文档&#xff0c;编辑注释和填写表单。功能强大&#xff0c;提供了多种PDF处理工具&#xff0c;包括阅读、注释…

北邮22级信通院数电:Verilog-FPGA(6)第六周实验:全加器(关注我的uu们加群咯~)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 作者建群啦&#xff01;&#xff01;&#xff01;欢…

基于​Segment-and-Track Anything与ProPainter实现视频一键目标移除与一键祛除水印

一、 ProPainter 1.算法简介 ProPainter是由新加坡南洋理工大学&#xff08;Nanyang Technological University&#xff09;的S-Lab团队开发的一款视频修复工具。它融合了图像和特征修复的优势&#xff0c;以及高效的Transformer技术&#xff0c;旨在提供高质量的视频修复效果…

libcurl Socks5 堆缓冲区溢出漏洞(CVE-2023-38545)详细分析

简介 curl 是用于在各种网络协议之间传输数据的命令行工具&#xff0c;libcurl 用于提供处理网络通信和数据传输的 Api 接口。curl 默认下载缓冲区为 102400 字节&#xff0c;但如果设置低于每秒 102400 字节&#xff0c;缓冲区大小会自动设置为更小的值。libcurl 下载缓冲区默…

AIO开放接口平台免费畅享ChatGPT聊天、联网互动、学术等服务!更有DALL·E 3最强AI绘图功能!

免费畅享&#xff01; AIO平台ChatGPT联网、聊天、学术等服务&#xff01; AIO开放接口平台 | 服务介绍 ALL IN ONE &#xff08;AIO&#xff09;API服务是LLM(大语言模型)开放接口平台&#xff1a;持续接入各种主流的大模型接口&#xff0c;并提供简单、易用、统一的API交互…

第四章 路由基础

目录 4.1 路由器概述 4.1.1 路由器定义 4.1.2 路由器工作原理 4.1.3 路由表的生成方式 &#xff08;1&#xff09;直连路由 &#xff08;2&#xff09;静态路由 &#xff08;3&#xff09;动态路由 4.1.4 路由器的接口 &#xff08;1&#xff09;配置接口 &#xff0…

css中px、em、rem、%、vw、vh、vm、rpx 这些单位的区别

序言 px&#xff1a;像素 相对长度单位&#xff0c;相对于显示器屏幕分辨率(推荐使用) em&#xff1a;相对长度单位 基准点为父节点字体的大小&#xff0c;如果自身定义了font-size按自身来计算&#xff08;浏览器默认字体是16px&#xff09;&#xff0c;整个页面内1em不是一个…

如何将 Helm Chart 推送至 Harbor ?

Author&#xff1a;rab 前言&#xff1a;我们说 Helm 的私有仓库可以是任何 HTTP Server&#xff08;如 Nginx、Apache 等&#xff09;&#xff0c;而 Harbor 自带 Helm 私有仓库的功能&#xff08;但默认是禁用的&#xff0c;需要我们手动启用&#xff09;&#xff0c;如果为了…

电子元器件管理系统 JAVA语言开发

目录 一、系统介绍 二、系统下载 三、系统截图 一、系统介绍 基于VueSpringBootMySQL的电子元器件管理系统包含元器件单位模块、元器件仓库模块、元器供应商模块、元器件品类模块、元器件明细模块、元器件采购模块、元器件采购审核模块、元器件领用模块、学生元器件申请模块…

Cisco IOS XE Web UI 命令执行漏洞

Cisco IOS XE Web UI 命令执行漏洞 受影响版本 Cisco IOS XE全版本 漏洞描述 Cisco IOS XE Web UI 是一种基于GUI的嵌入式系统管理工具&#xff0c;能够提供系统配置、简化系统部署和可管理性以及增强用户体验。它带有默认映像&#xff0c;因此无需在系统上启用任何内容或安…

ideaSSM在线商务管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 SSM 在线商务管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码 和数据库&#xff0c;系统主…

VS Code C# 开发工具包正式发布

前言 微软于本月正式发布Visual Studio Code C#开发工具包&#xff0c;此前该开发套件已经以预览版的形式在6月份问世。经过4个月的测试和调整&#xff0c;微软修复了350多个问题&#xff0c;其中大部分是用户反馈导致的问题。此外&#xff0c;微软还对产品进行了300多项有针对…

OpenCV 笔记(3):基本图形的绘制

Part11. 绘制简单的图形 绘图功能是 OpenCV 最基础的功能&#xff0c;OpenCV 提供了基础的绘制函数&#xff0c;用于帮助我们绘制一些基本的图形。通过这些函数的组合&#xff0c;我们也可以做一些高级的应用。 11.1 绘制点和圆 OpenCV 的绘制函数相对简单&#xff0c;而且很多…

WPF Material Design UI框架

前言 Material Design in xaml 是开源免费的ui框架&#xff0c;工控软件主打的就是简单界面。 以下简称MD 相关资源 MaterialDesignInXamlToolkit Github 地址 MD 快速启动 MD 案例压缩包 MD 框架使用 启动环境配置 安装Nuget包 App.xaml 配置 <Application x:Class&qu…

部署:端口映射相关问题

图片仅作示意用途 在很多现场部署环境里&#xff0c;网络管理是相对严格的&#xff0c;设备所在的子网如果需要和办公网所在的服务器通讯&#xff0c;需要通过专门的中间节点&#xff0c;一般还有严格的防火墙配置。此时&#xff0c;研发环境里&#xff0c;服务器与设备子网各…

在edge浏览器中安装好了burp的ca证书,浏览器依旧不能访问https的原因

在edge浏览器中安装好了burp的ca证书&#xff0c;浏览器依旧不能访问https的原因 1.SwitchyOmega代理插件设置2.CA证书方法1方法2 1.SwitchyOmega代理插件设置 严格安装以下图片执行&#xff0c;不可少写或多写 2.CA证书 方法1 下载好证书&#xff0c;先导入到edge浏览器的中…

linux下部署nacos(单机、集群)

文章目录 nacos简介单机部署集群部署部署常见问题 官网文档地址&#xff1a;https://nacos.io/zh-cn/docs/deployment.html github地址&#xff1a;https://github.com/alibaba/nacos nacos简介 Nacos&#xff0c;全称阿里巴巴开源的动态服务发现、配置和服务管理平台&#x…

【数据结构】堆的详解

文章目录 堆的简介堆的实现堆的插入数据堆的删除数据 堆排序向上调整和向下调整的时间复杂度的分析 大量数据的topk问题 堆的简介 今天要写的数据结构是堆&#xff0c;什么是堆呢&#xff1f;堆其实是一种完全二叉树&#xff0c;只不过它是有条件的。 堆分为两种&#xff0c;一…

【AGC】更新应用信息报未知错误解决方法

【问题描述】 最近有几个开发者遇到了一个问题&#xff0c;他们在AGC控制台配置好应用信息的图标和截图之后&#xff0c;点击保存按钮会弹出“未知错误&#xff0c;请稍后再试”的异常报错&#xff0c;导致无法正确保存应用配置信息。 出错页面如图所示。 ​​ 【解决方案】 …