返回信息流在杭电上做1425题 题目要求是:给你n个整数,请按从大到小的顺序输出其中前m大的数。
使用下面代码
```
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[1000000];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);//,cmp
printf("%d",a[n-1]);
for(int i=n-2;i>=n-m;i--)
{
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
```
在本地devC++测试正常输出 在杭电oj会超时
但是在头文件加上string.h就不会超时
求问string.h在这里的作用
多谢
又发现一个问题 当使用如下代码:
```
#include<stdio.h>
#include<malloc.h>
#include<algorithm>
using namespace std;
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
int*a=(int*)malloc(sizeof(int)*n);
int i;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
for(i=n-1;i>n-m;i--){
printf("%d ",a[i]);
}
printf("%d\n",a[n-m]);
free(a); } return 0;
}
```
会超时 但是添加头文件iostream就不会超时 但在devc++都能测试通过
小白提问
@nuanyangyang
这是一条镜像帖。来源:北邮人论坛 / cpp / #92293同步于 2016/6/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
string.h问题
wang10211223
2016/6/26镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
试着不要排序,把数据分成sqrt (n)组,每组sqrt(n)个元素。先用线性查找找到每组的最大值,然后再在这些最大值中找到全局最大值。之后,原来那个最大值来自哪个组,就从那个组里找到次大值,然后再找全局最大值。如此循环。
复杂度是O(n+k*sqrt(n)), 其实复杂度比用堆还要高,但如果k特别小的话……
【 在 wang10211223 的大作中提到: 】
: 在杭电上做1425题 题目要求是:给你n个整数,请按从大到小的顺序输出其中前m大的数。
: 使用下面代码
: ```
: ...................