zoukankan      html  css  js  c++  java
  • uva 10487 Closest Sums

    数据比较小,所以直接将所有和算出来,然后在遍历和的数组,找出最靠近的。

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    
    int f(int a,int b)
    {
        if(a>b) return a-b;
        return b-a;
    }
    
    int main()
    {
        int n,m,i,j,a[1024],b[30],cas=0,ans,cnt,k,sum[1000010];
        while(~scanf("%d",&n)&&n)
        {
            for(i=0; i<n; i++) scanf("%d",&a[i]);
            scanf("%d",&m);
            for(i=0; i<m; i++) scanf("%d",&b[i]);
            cnt=0;
            for(i=0;i<n;i++)
                for(j=i+1;j<n;j++)
                {
                    sum[cnt]=a[i]+a[j];
                    cnt++;
                }
                sort(sum,sum+cnt);
            printf("Case %d:
    ",++cas);
            for(i=0;i<m;i++)
            {
                if(b[i]<=sum[0]) ans=sum[0];
                else if(b[i]>=sum[cnt-1]) ans=sum[cnt-1];
                else
                {
                    for(j=0;j<cnt-1;j++) if(b[i]>sum[j]&&b[i]<=sum[j+1]) break;
                    if(f(b[i],sum[j])>f(b[i],sum[j+1])) ans=sum[j+1];
                    else ans=sum[j];
                }
                printf("Closest sum to %d is %d.
    ",b[i],ans);
            }
        }
        return 0;
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    堆排序
    2019晋城一中开放日
    严格次小生成树
    遥远的国度
    noip2018游记
    Luogu1736 创意吃鱼法
    P3958 奶酪
    Luogu3385 负环
    Luogu1040 加分二叉树
    Luogu1007 独木桥
  • 原文地址:https://www.cnblogs.com/xryz/p/4848096.html
Copyright © 2011-2022 走看看