69,382
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
int sort_function(const void *a,const void *b){
return *((double *)a)-*((double *)b);
}
int main()
{
int N,i,j,sum=0;
double p,a[100000],t;
scanf("%d %lf",&N,&p);
for(i=0;i<N;i++){
scanf("%lf",&a[i]);
}
qsort(a,N,sizeof(double),sort_function);
for(i=0;i<N;i++){
for(j=N-1;j>0;j--){
if(a[j]<=a[i]*p){
if(sum<j-i){
sum=j-i;
}
else{
break;
}
}
}
}
printf("%d\n",sum+1);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int sort_function(const void *a,const void *b)
{
return *((double *)a)-*((double *)b);
}
int main()
{
int N, i, j, sum = 0;
double p, *a;
scanf("%d%lf", &N, &p);
a = (double *)malloc(sizeof(double) * N);
if (!a) {
fprintf(stderr, "malloc error!\n");
return -1;
}
for(i = 0; i < N; i++)
scanf("%lf", &a[i]);
qsort(a, N, sizeof(double), sort_function);
for(i = 0; i < N; i++){
for(j = N-1; j > 0; j--){
if(a[j] <= a[i] * p) {
if(sum < j - i)
sum = j - i;
else
break;
}
}
}
printf("%d\n",sum+1);
free(a);
return 0;
}
栈上的空间是有限的,不建议你在栈上申请太大的空间。需要多少就申请过少,但是C语言不支持可变数组,所以在栈上申请了空间。
对于缩小运行时间,从你这个程序里来讲,从减少循环次数开始吧,若想减少循环次数,那么就要从算法上考虑了。