IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PAT (Basic Level) Practice (中文)1015 德才论 (25 分) -> 正文阅读

[C++知识库]PAT (Basic Level) Practice (中文)1015 德才论 (25 分)

/*
重点:
	1.读题先明白需要啥读了一边,你知道是排序题,
	而且你还需要一个结构体,所以呢你需要掌握排
	序sort的使用(还有cmp(是一个决定如何比较的函数)),
	还要掌握如何给结构体中的元素排序,这是重难点。
	2.分析题目要求,就是该怎么分类排序 
先分类别:
		1.德才都超 H 线 >=  按总分排序 
		2.德到才不到 也按总分排序
		3.德才都不到 但德分大于才分 也按总分排序
		4.其他到达录取线 也按总分排序 
	3.机智点:就是他让我们返回那个符合的人数,用
	total--很机智嘿嘿
	4.需要看输入输出案例,里面会有隐藏信息 
*/
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
using namespace std;
struct node{
	int num,de,cai;
};
bool cmp(node a,node b){//这个是排序要求,文章后会详细介绍它的原理 
	if((a.cai+a.de)!=(b.cai+b.de))
		return (a.cai+a.de)>(b.cai+b.de);
	else if(a.de!=b.de)
		return a.de>b.de;
	else
		return a.num<b.num;
}
int main(){
	int n,l,h;
	cin>>n>>l>>h;
	node temp;
	vector<node> v[4];//这个很关键的,它将符合要求的放在一起便于我们去处理 
	int total=n;
	for(int i=0;i<n;i++){
		scanf("%d%d%d",&temp.num,&temp.de,&temp.cai);
		if(temp.cai<l||temp.de<l)
			total--;
		else if(temp.cai>=h&&temp.de>=h)
			v[0].push_back(temp);//STL中的 文章末尾会提到它的作用和如何使用 
		else if(temp.cai<h&&temp.de>=h)
			v[1].push_back(temp);
		else if(temp.cai<h&&temp.de<h&&temp.de>=temp.cai)
			v[2].push_back(temp);
		else
			v[3].push_back(temp); 
	}
	printf("%d\n",total);
	for(int i=0;i<4;i++){
		sort(v[i].begin(),v[i].end(),cmp);//排序题必不可缺 
		for(int j=0;j<v[i].size();j++){
			printf("%d %d %d\n",v[i][j].num,v[i][j].de,v[i][j].cai);
		}
	}
	return 0;
}

芝士++

1.sort()函数

????????1)Sort函数包含在#include<algorithm>的c++标准库中

? ? ? ? 2)Sort函数有三个参数

? ? ? ? ? ? ? ? i)第一个是要排序的数组的起始位置

? ? ? ? ? ? ? ? ii)第二个是要排序的数组的结束位置

? ? ? ? ? ? ? ? iii)第三个是排序的方法,升序还是降序……也就是下面说的cmp

????????总结起来就是:sort(begin,end,排序方法)

2.cmp

? ? ? ? 1)手写排序顺序

bool cmp(int a,int b){
    return a>b;//从大到小排序
}

bool cmp(int a,int b){
    return a<b;//从小到大排序
}

? ? ? ? 2)当然你可以用c++标准库中的函数了

? ? ? ? less<数据类型>();//从小到大排序

? ? ? ? greater<数据类型>();//从大到小排序

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
	int n;
	cin>>n;
	int a;
	vector<int> v;
	for(int i=0;i<n;i++){
		cin>>a;
		v.push_back(a);
	}
	sort(v.begin(),v.end(),less<int>());
	cout<<"经过less<int>()排序标准后:"; 
	for(int i=0;i<n;i++){
		cout<<v[i]<<'\t';
	}
	cout<<endl;
	sort(v.begin(),v.end(),greater<int>());
	cout<<"经过greater<int>()排序后 :";
	for(int i=0;i<n;i++){
		cout<<v[i]<<'\t';
	}
}

?

3.vector?

vector函数的头文件是#include<vector>

介绍:在c++中,vector是一个十分有用的容器。

作用:它能够像容器一样存放各种类型的对象。简单说,vector是一个能够存放任意类型的

动态数组,能够增加和压缩数据。

注意:vector作为函数的参数或者返回值时注意他的写法:

? ? ? ? int fun(vector<int>&a,vector<int>&b) 其中的&绝对不能丢!!!

? ? ? ? 1)基本操作

? ? ? ? ? ? ? ? 头文件 #include<vector>

? ? ? ? ? ? ? ? 创建vector对象 vector<int>vec;

????????? ? ? ? 尾部插入数字vec.push_back(a);

? ? ? ? ? ? ? ? 使用下标访问元素 cout<<vec[0]<<endl;

? ? ? ? ? ? ? ? 使用迭代器访问元素 vector<int>::iterator it;

? ? ? ? ? ? ? ? ? ? ? ? for(it=vec.begin();it!=vec.end();it++)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cout<<*it<<endl;

? ? ? ? ? ? ? ? 插入元素: vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a

? ? ? ? ? ? ? ? 删除元素:vec.erase(vec.begin()+i,vec.end+j);//删除区间[i,j-1];

? ? ? ? ? ? ? ? 数组大小(不那么准确):vec.size();

? ? ? ? ? ? ? ? 清空 vec.clear();

? ? ? ?2)算法

? ? ? ? ? ? ? ? 头文件 #include<algorithm>

? ? ? ? ? ? ? ? 使用reverse(vec.begin(),vec.end());//将元素翻转,逆序排列

? ? ? ? ? ? ? ? 使用sort排序sort(vec.begin(),vec.end());//默认升序

vector<int>test;
//建立一个vector,int 为数组元素的数据类型,test为动态数组名
//简单的用法

#include<vector>
#include<iostream>
using namespace std;
int main(){
    vector<int>test;
    test.push_back(1);
    test.push_back(2);
//作用是:test[0]=1;test[1]=2;
}

????????????????

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章           查看所有文章
加:2022-01-17 11:19:46  更:2022-01-17 11:22:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:58:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码