zoukankan      html  css  js  c++  java
  • poj2549--Sumsets (sum)

    Sumsets
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 9983   Accepted: 2731

    Description

    Given S, a set of integers, find the largest d such that a + b + c = d where a, b, c, and d are distinct elements of S.

    Input

    Several S, each consisting of a line containing an integer 1 <= n <= 1000 indicating the number of elements in S, followed by the elements of S, one per line. Each element of S is a distinct integer between -536870912 and +536870911 inclusive. The last line of input contains 0.

    Output

    For each S, a single line containing d, or a single line containing "no solution".

    Sample Input

    5
    2 
    3 
    5 
    7 
    12
    5
    2 
    16 
    64 
    256 
    1024
    0
    

    Sample Output

    12
    no solution
    

    Source

     
    转化成 a+b=c-d;
    #include <cstdio>
    #include <algorithm>
    #define M 1010
    using namespace std;
    int num[M];
    int main()
    {
        int n;
        while(scanf("%d", &n) != EOF &&n!=0)
        {
            for(int i=0; i<n; i++)
                scanf("%d", &num[i]);
            sort(num, num+n);
            int re; bool flag=1;
            for(int i=n-1; i>=0; i--)
            {
                for(int j=n-1; j>=0; j--)
                {
                    if(i==j)
                        continue;
                    int multiply=num[i]-num[j];
                    int rear=0, top= j-1;   //注意 top取值范围 ; 
                    while(rear<top)
                    {
                        if(multiply==num[rear]+num[top])
                        {
                            re=num[i];    flag=0;
                        }
                        if(multiply>num[rear]+num[top])
                            rear++;
                        if(multiply<num[rear]+num[top])
                            top--;
                        if(!flag) break;                    
                    }
                    if(!flag) break; 
                }
                if(!flag) break;
            }
            if(flag)
                printf("no solution
    ");
            else
                printf("%d
    ", re);
        }
        return 0;    
    } 
  • 相关阅读:
    Mybatis详解(二)
    Mybatis详解(一)
    Java集合
    Java基础之IO
    Java异常知识点!
    HTTP状态码
    ajax传字符串时出现乱码问题的解决
    Json 文件 : 出现 Expected value at 1:0 问题的解决
    java @XmlTransient与@Transient区别
    文件的上传和回显
  • 原文地址:https://www.cnblogs.com/soTired/p/5326075.html
Copyright © 2011-2022 走看看