每日题解(进来必会)
2026-04-19 17:07:03
发布于:浙江
20阅读
0回复
0点赞
来!那经常看我题解的都知道,你看了未必会发笑,但是也有趣到爆。
直奔主题:
首先,看题目,这题目说的那么高大上,其实也就那样,如果你真的喜欢看这类科幻小说,建议去看看危机计划、科技纪元。咳咳!差点跑题,我们把题目翻译成人话就是:
给定一个长度为n的数组,从中找出最大的m个数,并从大到小输出。
先来讲思路,代码在最下面。首先第一步,框架会吧:
#include<bits/stdc++.h>//建议使用万能头
using namespace std;
int main(){
return 0;
}
接下来呢把变量n,m数组a定义并输入进去。
int n,m;//定义n和m
int a[1000010];//数组要开够
cin>>n>>m;
for(int i=1;i<=n;i++){//利用for循环输入
cin>>a[i];
}
以上都是基本操作,就好比在煮饭之前先买个锅。现在锅碗瓢盆都买好了,要开始做饭了。
本题最佳解法是用sort排序,我问你,sort排序是默认什么?A.升序B.降序C.随机序
选C的,我建议你检测一下大脑有什么故障,最好把什么是c++,什么是排序都再学习一下。
排序排序,能排随机序?
好,接下来是选B的,我不和你计较。我就明确告诉你,选A!浪费这么多时间。
好继续,这个题目要从大到小也就是降序,那么你就需要自己写一个函数。
bool cmp(int a,int b){
return a > b;
}
就这么写。好来,接下来排序。什么?sort不会用?别急,先点个赞,求求你们了。
sort(数组名+收尾下标,数组名+末尾下标+1,函数(可不写));
这就是sort的用法,来,套公式。
sort(a+1,a+n+1,cmp);
好啊,这样就完成降序排序了。
最后输出就不单独写了。来,请看vcr完整代码:
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
return a > b;
}
int main(){
int n,m;
int a[1000010];
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=m;i++){
cout<<a[i]<<" ";
}
return 0;
}
点个赞吧,谢谢!
这里空空如也





有帮助,赞一个