竞赛
考级
4. 激活密钥 思路分析 本题又考排序了。只需要将数组进行倒序,然后输出前m大的即可。将数组倒序,可以采用C++中的sort,写一个cmp函数即可。 代码分析
来!那经常看我题解的都知道,你看了未必会发笑,但是也有趣到爆。 直奔主题: 首先,看题目,这题目说的那么高大上,其实也就那样,如果你真的喜欢看这类科幻小说,建议去看看危机计划、科技纪元。咳咳!差点跑题,我们把题目翻译成人话就是: 给定一个长度为n的数组,从中找出最大的m个数,并从大到小输出。 先来讲思路,代码在最下面。首先第一步,框架会吧: 接下来呢把变量n,m数组a定义并输入进去。 以上都是基本操作,就好比在煮饭之前先买个锅。现在锅碗瓢盆都买好了,要开始做饭了。 本题最佳解法是用sort排序,我问你,sort排序是默认什么?A.升序B.降序C.随机序 选C的,我建议你检测一下大脑有什么故障,最好把什么是c++,什么是排序都再学习一下。 排序排序,能排随机序? 好,接下来是选B的,我不和你计较。我就明确告诉你,选A!浪费这么多时间。 好继续,这个题目要从大到小也就是降序,那么你就需要自己写一个函数。 就这么写。好来,接下来排序。什么?sort不会用?别急,先点个赞,求求你们了。 这就是sort的用法,来,套公式。 好啊,这样就完成降序排序了。 最后输出就不单独写了。来,请看vcr完整代码: 点个赞吧,谢谢!
#include<bits/stdc++.h> using namespace std; bool cmp(int a,int b) { return a>b; } int main() { long long a,b,c[1000005]; cin>>a>>b; for(int i=1;i<=a;i++) { cin>>c[i]; } sort(c+1,c+a+1,cmp); for(int i=1;i<=b;i++) { cout<<c[i]<<" "; } }
————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————————————防透视————————
使用sort,快速排序
题意 给定一个长度为 nnn 的数组,需要从中找出最大的 kkk 个数,并按照从大到小的顺序输出。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 思路 1.输入数据:先读入数组长度 nnn 和需要取出的最大数的个数 kkk,然后读入 nnn 个整数存入数组。 2.自定义排序:使用 sortsortsort 函数,配合自定义比较函数 cmpcmpcmp,实现数组从大到小降序排序。 3.输出结果:依次输出排序后数组的前 kkk 个元素,即为最大的 kkk 个数。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 完整代码
用s o r t
——————我是防透视——————————————————————————————————————————————————————————求求你进来吧————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 首先呢,看题意就可以知道这是要编cmp的(其他的也行,小根堆啊大根堆啊),然后呢就是直接输出前n个数,这道题就AC啦!!! ε=ε=ε=(#>д<)ノ 为什么洛谷要限制题解篇数啊!!! 一草温馨提醒您 : : : 题解千万条 思考第一条 随便抄题解 封号两行泪 不得不说,这列表真难用
不加cmp
用2个数组,一个a,一个b。
提交答案之后,这里将显示提交结果~