1 条题解
-
0
这段代码解决的是"最大比率对"问题,核心是从两组数的所有可能比率中找出最大相邻比率。
问题分析:给定两组数R和F,计算所有可能的比率r[j]/f[i],然后找出这些比率排序后相邻元素间的最大比值。
关键步骤: 生成比率:遍历所有可能的r[j]/f[i]组合,存储在数组s中。 排序:将所有比率从小到大排序。 计算最大相邻比率:遍历排序后的数组,计算相邻元素的比值,取最大值。 数学原理:排序后相邻元素的比值能覆盖所有可能的局部最大增长率,从而找到全局最大增长率。
#include<iostream> #include<cmath> #include<algorithm> #include<cstdio> // 添加这个头文件以支持scanf和printf using namespace std; double r[12]; double f[12]; double s[102]; int main() { int i,j,k,R,F; double d,ans; while(scanf("%d",&F)!=EOF) { if(F==0) break; scanf("%d",&R); for(i=0;i<F;i++) scanf("%lf",&f[i]); for(i=0;i<R;i++) scanf("%lf",&r[i]); for(i=0,k=0;i<F;i++) for(j=0;j<R;j++) { d=r[j]/f[i]; s[k++]=d; } sort(s,s+k); ans=0.0; for(i=1;i<k;i++) { d=s[i]/s[i-1]; if(d>ans) ans=d; } printf("%.2lf\n",ans); } return 0; }
- 1
信息
- ID
- 2301
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 5
- 已通过
- 1
- 上传者