1 条题解

  • 0
    @ 2025-5-25 17:16:38

    这段代码解决的是"最大比率对"问题,核心是从两组数的所有可能比率中找出最大相邻比率。

    问题分析:给定两组数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
    上传者