1 条题解

  • 0
    @ 2024-12-24 9:59:30

    C :

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int number[1003];
    int word[100000];
    void make(int head,int ptail,int mid)
    {
        int i,j,k;
        int *x=(int *)malloc((ptail-head+1)*sizeof(int));
        for (i=head,j=mid+1,k=0;i<=mid&&j<=ptail;k++)
        {
            if (number[i]<number[j])
            x[k]=number[i++];
            else
            x[k]=number[j++];
        }
        while(i<=mid)
        x[k++]=number[i++];
        while(j<=ptail)
        x[k++]=number[j++];
        for (i=head,j=0;j<k;i++,j++)
        number[i]=x[j];
        free(x);
    }
    void sort(int head,int ptail)
    {
        if (head>=ptail) return;
        int mid=(head+ptail)/2;
        sort(head,mid);
        sort(mid+1,ptail);
        make(head,ptail,mid);
    }
    int main(void)
    {//freopen("love.txt","r",stdin);
        int n,i,j;
        while(scanf("%d",&n)!=EOF)
        {
            if (n==0) break;
            memset(number,0,sizeof(number)); memset(word,0,sizeof(word));
            scanf("%d",&number[0]);
            for (i=1;i<n;i++)
            {
                scanf("%d",&number[i]);
                for (j=i-1;j>=0;j--)
                {
                    int sum=number[i]+number[j];
                    word[sum]=1;
                }
            }
            sort(0,n-1);
            int flag=0;
            for (i=n-1;i>=0;i--)
            {
                for (j=i-1;j>=0;j--)
                {
                    int sum=number[i]-number[j];
                    if (word[sum]!=0)
                    {
                        flag=1;
                        printf("%d\n",number[i]);
                        break;
                    }
                }
                if (flag==1) break;
            }
            if (flag==0)
            printf("no solution\n");
        }
        return 0;
    }
    
    

    C++ :

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    int bs(int a[],int l,int r,int x)
    {
    	int m;
    	while(l<r)
    	{
    		m=(l+r)>>1;
    		if(a[m]==x)
    			return m;
    		if(a[m]<x)
    			l=m+1;
    		else
    			r=m;
    	}
    	return -1;
    }
    
    int main()
    {
    	int n,a[1000],i,j,k,bet,p,flag,ans;
    	while(scanf("%d",&n)!=EOF,n)
    	{
    		for(i=0;i<n;i++)
    			scanf("%d",&a[i]);
    		sort(a,a+n);
    		for(flag=0,i=n-1;i>=0;i--)
    		{
    			for(j=0;j<i;j++)
    			{
    				for(k=j+1;k<n;k++)
    				{
    					bet=a[i]-a[j]-a[k];
    					p=bs(a,k+1,n,bet);
    					if(p!=-1&&p!=i)
    					{
    						ans=i;
    						flag=1;
    						break;
    					}
    				}
    				if(flag)
    					break;
    			}
    			if(flag)
    				break;
    		}
    		if(flag)
    			printf("%d\n",a[ans]);
    		else
    			puts("no solution");
    	}
    	return 0;
    }
    

    Java :

    import java.util.*;
    public class Main{
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            while(in.hasNextInt()){
                int n = in.nextInt();
                if(n==0)
                break;
                if(n==0)
                break;
                int[] x = new int[n];
                for(int i=0;i<n;i++){
                    x[i] = in.nextInt(); 
                }
                Arrays.sort(x);
                boolean a = false;
                for(int i=n-1;i>=3;i--){
                    for(int j=0;j<i;j++){
                        for(int k=0;k<i;k++){
                            if(k==j)
                            continue;
                            for(int m=0;m<i;m++){
                                if(m==j||m==k)
                                continue;
                                if(x[i]==x[j]+x[k]+x[m]){
                                    a = true;
                                    System.out.println(x[i]);
                                    break;
                                }
                            }
                            if(a)
                            break;
                        }
                        if(a)
                        break;
                    }
                    if(a)
                    break;
                }
                if(!a){
                    System.out.println("no solution");
                }
            }
        }
    }
    
    • 1

    信息

    ID
    1655
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者