<s>PAT 乙级 1030.</s><s>完美数列(25)</s>
<s>#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; } 栈上的空间是有限的，不建议你在栈上申请太大的空间。</s><s>需要多少就申请过少，但是C语言不支持可变数组，所以在栈上申请了空间。</s><s>对于缩小运行时间，从你这个程序里来讲，从减少循环次数开始吧，若想减少循环次数，那么就要从算法上考虑了。</s>
