信奥赛一本通算法 第二章数据排序(【例2.2】车厢重组、谁考了第k名、奇数单增序列、成绩排序、奖学金、分数线划定、整数奇偶排序)

news2024/9/23 7:25:19

数据算法

    • 1310:【例2.2】车厢重组
    • 1176:谁考了第k名
    • 1177:奇数单增序列
    • 1178:成绩排序
    • 1179:奖学金
    • 1180:分数线划定
    • 1181:整数奇偶排序

1310:【例2.2】车厢重组

在这里插入图片描述
这道题简单,题目说相邻值交换,而且是排序算法,那我们一推就知道是冒泡排序。
那只要交换值,就让我们次数+1,排序结束输出即可!

//1310:【例2.2】车厢重组
#include<bits/stdc++.h>
using namespace std;
int a[10001];
int main(){
	int n,cnt=0;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	for(int i=n-1;i>=0;i--){
		bool flag=false;
		for(int j=0;j<i;j++){
			if(a[j]>a[j+1]){
				swap(a[j],a[j+1]);
				flag=true;
				cnt++;
			}
		}
		if(flag==false){
			break;
		}
	}
	cout<<cnt;
	return 0;
} 

1176:谁考了第k名

在这里插入图片描述
有题目可知,一个学生有两个属性 学号与成绩;我们可以用结构体保存结果。
定义与输入搞定后,我们要对成绩排一下序,高到低。
需要用到sort排序,自定义比较函数cmp。
最后输出第K名的成绩即可。

#include<bits/stdc++.h>
using namespace std;
struct Student{
    int name;  // 学生名字 
    float score; // 存三个成绩 语数英 
}; 
bool cmp(Student x,Student y){
	return x.score>y.score;
}
int main(){
	int n,k;
	cin>>n>>k;
	Student stu[n+1];
	for(int i=0;i<n;i++){
		cin>>stu[i].name>>stu[i].score;
	}
	sort(stu,stu+n,cmp);
	cout<<stu[k-1].name<<" "<<stu[k-1].score;
	return 0;
}

1177:奇数单增序列

在这里插入图片描述
在这里插入图片描述
输入值到数组,然后进行排序,用sort排序,cmp自定义比较:奇数在前偶数在后。输出要逗号。我们可以输出一个值带一个逗号,注意循环输出只到倒数第二个数。

//1177:奇数单增序列
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,a[1000],j=0;
	cin>>n;
	for(int i=0;i<n;i++){
		int k;
		cin>>k;
		if(k%2) a[j++]=k;
	}
	sort(a,a+j);
	for(int i=0;i<j-1;i++){
		cout<<a[i]<<",";
	}
	cout<<a[j-1];
	return 0;
} 

1178:成绩排序

在这里插入图片描述
在这里插入图片描述
由题目可知,一个学生有名字和成绩两个属性,我们用到结构体来存储。

  1. 定义结构体,然后声明结构体数组并输入值。
  2. 对学生成绩进行sort排序,自定义比较函数让成绩从大到小,成绩相等则让名字按字母从小到大。
  3. 最后输出结果。
//1178:成绩排序
#include<bits/stdc++.h>
using namespace std;
struct Student{
    string name;  // 学生名字 
    int score; 
}; 
bool cmp(Student x,Student y){
	if(x.score!=y.score) return x.score>y.score;
	else return x.name<y.name;
}
int main(){
	int n;
	cin>>n;
	Student stu[n+1];
	for(int i=0;i<n;i++){
		cin>>stu[i].name>>stu[i].score;
	}
	sort(stu,stu+n,cmp);
	for(int i=0;i<n;i++){
		cout<<stu[i].name<<" "<<stu[i].score<<endl;
	}
	return 0;
}

1179:奖学金

在这里插入图片描述
由题目可知,我们一个学生有 语数英成绩、学号、总分等5个属性。那我们定义结构体完成。

  1. 定义结构体,然后声明结构体数组并输入值,对学号赋值。
  2. 依次对总分、语文成绩、学号进行sort排序,自定义比较函数让总分从大到小,总分相等则让语文成绩从大到小,不然就按学号从小到大。
  3. 最后输出前5名的学号与总分结果。
//1179:奖学金
#include<bits/stdc++.h>
using namespace std;
struct Student {
    int score[3],total,id;
};
bool cmp(Student x,Student y){
	if(x.total!=y.total) 
		return x.total>y.total;
	if(x.total==y.total && x.score[0]!=y.score[0]) 
		return x.score[0]>y.score[0];
	if(x.total==y.total && x.score[0]==y.score[0])
		return x.id < y.id;
}
int main() {
	int n;
	cin>>n;
    Student stu[n+1];
    for (int i=0; i<n; i++){
    	stu[i].id = i+1;
    	stu[i].total=0; 
    	for(int j=0;j<3;j++){
    		cin>>stu[i].score[j];
    		stu[i].total += stu[i].score[j];	
		}
    }
    sort(stu,stu+n,cmp);
    for(int i=0; i<5; i++){ 
        cout<<stu[i].id<<" "<<stu[i].total<<endl;
    }
    
    return 0;
}

1180:分数线划定

在这里插入图片描述在这里插入图片描述在这里插入图片描述
由题目可知,面试分数线是第M名 x 150%的人分数线。我们知道一个学生有学号和成绩两个属性,用结构体做。

  1. 定义结构体,然后声明结构体数组并输入值。
struct Student{
    int id;   
    int score; 
}; 
int main(){
	int n,m;
	cin>>n>>m;
	Student stu[n+1];
	for(int i=0;i<n;i++){
		cin>>stu[i].id>>stu[i].score;
	}
  1. 面试后要先录取成绩最好的,也就是我们要事先对成绩进行sort排序。成绩一致按学号从小到大排序。
bool cmp(Student x,Student y){ //主函数外
	if(x.score!=y.score) return x.score>y.score;
	return x.id<y.id;
}
//主函数内
sort(stu,stu+n,cmp);
  1. 排完序后找第m名 x 150%的分数,用 p 变量存储
int cnt=0, p = stu[int(m*1.5)-1].score; //分数向下取整
  1. 接着求比第p名的分数线大的人数cnt。循环比较一下,大于等于p就次数+1。
for(int i=0;i<n;i++){
		if(stu[i].score>=p){
			cnt++;
		}
	}
  1. 最后依次输出cnt名的学号与成绩。
cout<<stu[cnt-1].score<<" "<<cnt<<endl;
	for(int i=0;i<cnt;i++){	
		cout<<stu[i].id<<" "<<stu[i].score<<endl;
	}

总代码如下:

//1180:分数线划定
#include<bits/stdc++.h>
using namespace std;
struct Student{
    int id;   
    int score; 
}; 
bool cmp(Student x,Student y){
	if(x.score!=y.score) return x.score>y.score;
	return x.id<y.id;
}
int main(){
	int n,m;
	cin>>n>>m;
	Student stu[n+1];
	for(int i=0;i<n;i++){
		cin>>stu[i].id>>stu[i].score;
	}
	sort(stu,stu+n,cmp);
	
	int cnt=0, p = stu[int(m*1.5)-1].score;
	for(int i=0;i<n;i++){
		if(stu[i].score>=p){
			cnt++;
		}
	}
	cout<<stu[cnt-1].score<<" "<<cnt<<endl;
	for(int i=0;i<cnt;i++){	
		cout<<stu[i].id<<" "<<stu[i].score<<endl;
	}
	return 0;
}

1181:整数奇偶排序

在这里插入图片描述
由题目可知,定义一维数组并输入10个数。然后进行sort排序,自定义比较过程。

//1181:整数奇偶排序
#include <iostream>
#include <algorithm>
using namespace std;
bool mycmp (int a,int b){
    if(a % 2 != b % 2){
        return a % 2 > b % 2;
    }
    if(a % 2 == b % 2){
    	if(a%2!=0) return a>b;
		else  return a<b;
	}
}
int main() {
    int arr[11],i=0;
//    while(cin>>arr[i++]){
//    	;
//	}
	for(int i=0;i<10;i++){
		cin>>arr[i];
	}
    sort(arr,arr + 10,mycmp);
    for (int i = 0; i < 10; i++) {
        cout << arr[i] <<" ";
    }
    cout << endl;
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马头条:app端文章查看

黑马头条&#xff1a;app端文章查看 黑马头条&#xff1a;app端文章查看文章列表加载1. 需求分析2. 表结构分析3. 导入文章数据库3.1 导入数据库3.2 导入对应的实体类 4. 实现思路5. 接口定义6. 功能实现6.1&#xff1a;导入heima-leadnews-article微服务&#xff0c;资料在当天…

无线通信的未来:WiFi HaLow的低功耗、超长距离革命

WiFi HaLow&#xff0c;一项创新性的Wi-Fi协议&#xff0c;致力于解决不断增长的物联网需求&#xff0c;兼具低功耗和超长距离覆盖的特点。建立在IEEE 802.11ah标准的基础上&#xff0c;WiFi HaLow为物联网开发者提供了全方位的无线解决方案&#xff0c;以满足他们对能源效率、…

Python报错:‘EagerTensor‘ object has no attribute ‘reshape‘

在使用RPython时&#xff0c;发现python代码部分报错&#xff1a;‘EagerTensor‘ object has no attribute ‘reshape‘ 如何解决&#xff1f; 使用np.array 转换为array&#xff0c;再进行reshape 参考&#xff1a; ‘EagerTensor‘ object has no attribute ‘reshape‘处…

由浅入深,详细总结 Spring 八种加载 Bean 的方式

文章目录 方式一&#xff1a;XML 方式声明 bean方式二&#xff1a;XML 注解方式声明 bean方式三&#xff1a;注解方式声明配置类扩展一&#xff1a;Bean 返回的对象和真实 Bean 对象可能不是一个扩展二&#xff1a;加载配置类的同时&#xff0c;加载配置文件&#xff08;系统迁…

堆体扫描点云体积计算实现思路分享

做了一个初步的 demo 实验&#xff0c; 计算一堆沙子或者煤堆这种物体的扫描点云的体积 思路就是分块计算每个小的立方体的体积&#xff0c;然后累加&#xff0c;wechat 394467238&#xff0c; 具体的实现细节略微麻烦一点&#xff0c;代码暂时不放了

C# 压缩图片

.net下跨平台图像处理 https://github.com/mono/SkiaSharp 安装包 skiasharp 效果 代码 ImageCompression.cs using SkiaSharp;namespace ImageCompressStu01 {/// <summary>/// 图片压缩/// </summary>public class ImageCompression{/// <summary>/…

Mysql第四篇---数据库索引优化与查询优化

文章目录 数据库索引优化与查询优化索引失效案例数据准备1. 全值匹配2 最佳左前缀法则(联合索引)主键插入顺序4 计算、函数导致索引失效5 类型转换(自动或手动)导致索引失效6 范围条件右边的列索引失效7 不等于(!或者<>)索引失效8 is null可以使用索引, is not null无法使…

数据结构之栈的讲解(源代码+图解+习题)

我们在学习过顺序表和链表之后&#xff0c;了解了使用数组存储数据&#xff0c;使用结构体来存储数据和有关的指针&#xff0c;这些都是底层的东西&#xff0c;链表是靠指针的链接&#xff0c;顺序表是靠数组的下标才能得以实现增删查改。众多数据结构其实底层都离不开数组&…

开发ABAP程序中的错误

select语句错误 select abc from <透明表> into table <内表> where <条件>. *字段必须要一一对应.否则会报错或者值平移 select * from <透明表> into corresponding fields of table <内表> where <条件>. *虽然可以自动匹配可以避免…

分享一下门店服务预约系统怎么做

随着科技的不断发展&#xff0c;越来越多的企业开始注重提高服务质量和效率。其中&#xff0c;门店服务预约系统成为了许多企业的选择。本文将探讨门店服务预约系统的意义、设计思路、实现方法、系统测试以及拓展案例&#xff0c;并总结门店服务预约系统设计和实现的重要性。 一…

使用pycharm远程连接到Linux服务器进行开发

预计达到的效果 本地的 PyCharm 能达到和远程服务器之间的文件同步&#xff1b;本地的 PyCharm 能够使用远程服务器的开发环境&#xff1b; 环境配置 PyCharm&#xff1a;PyCharm 2021.3 (Professional Edition)Linux服务器&#xff1a;Ubuntu20.04 步骤 1.进入配置项 配…

设计模式中的黄金原则:引领你的代码风格,提升可维护性与扩展性

中国的先贤说过: 有道无术,术可求.有术无道,止于术. 术指的是技能、技术或方法&#xff0c;而道指的是原则、道德、智慧和理念。 西方古代的哲人也说过同样的话: 智慧之路从感性开始&#xff0c;却终极于理性.为什么要说设计原则呢, 因为设计模式通常需要遵循一些设计原则&…

Docker GitLab-Runner安装

Docker GitLab-Runner安装 GitLab-Runner安装 问题合集GitLab 域名的配置修改Runner容器内注册失败&#xff0c;提示 dial tcp: lookup home.zsl0.com on 192.168.254.2:53: no such host GitLab-Runner 安装 拉去gitlab/gitlab-runner镜像 docker pull gitlab/gitlab-runne…

【STL】:vector用法详解

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关vector的基础用法&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…

什么是jquery

jquery是一个javascript库&#xff1b;用来简化javascript编程&#xff1b;基本是前端必备&#xff1b; 看一下示例&#xff1b; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <script src"https://cdn.staticfile.org/j…

智慧燃气:智慧燃气推进设备全面感知及协同运营

关键词&#xff1a;智慧燃气、燃气数字化、数字燃气、智能燃气、智慧燃气建设 智慧燃气建设应用技术迭代与试点推进方面的问题。随着大数据、人工智能、物联网等新兴前沿技术不断推进和产业化&#xff0c;以及国家工业和信息化部、住房和城乡建设部、国务院国资委等部委大力推…

WMS仓储管理系统在电商领域的应用与影响

随着电商行业的快速发展&#xff0c;消费者对购物体验的要求也越来越高。而在电商运营中&#xff0c;仓储管理系统的应用对于提升购物体验和销售业绩有着重要的作用。本文将探讨WMS仓储管理系统在电商行业的应用与影响。 WMS&#xff08;Warehouse Management System&#xff0…

实战经验分享:打造千万级直播项目,如何选择适合的长连接技术,告别CRUD开发

前言 其实不管大厂、小厂&#xff0c;做业务开发的同学都知道&#xff0c;写一个功能&#xff0c;有中台&#xff0c;有架构&#xff0c;有API&#xff0c;有SDK&#xff0c;很多可复用的代码直接调一下RPC接口或者一个注解就搞定了复杂的操作&#xff0c;所以很多螺丝钉们都没…

对python中切片详解

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 Python中什么可以切片 Python中符合序列的有序序列都支持切片(slice) 如:列表,字符,元祖 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff0c;尽在下方&#xff0c;赶紧点击了解吧~ python源码、视…

YOLO目标检测——人体行为数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;在人流量统计、行人闯入/越界检测、人群密集/拥堵检测预警等场景中&#xff0c;对监控场景中是否存在人体进行检测&#xff0c;并精确定位、追踪。数据集说明&#xff1a;&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含…