1 条题解

  • 0
    @ 2025-2-14 21:11:41

    C :

    #include<stdio.h>
    int main()
    {
    	int L, N, sum = 0;
    	int A[600] = { 0 };
    	while (scanf("%d %d", &L, &N) != EOF)
    	{
    		for (int i = 0; i < N; i++)
    		{
    			scanf("%d", &A[i]);
    			sum += A[i];
    		}
    		if (sum < L)
    		{
    			printf("impossible");
    
    		}
    		else
    		{
    			sum = 0;
    			for (int i = 0; i < N; i++)
    			{
    				for (int j = 0; j < N; j++)
    				{
    					if (A[i] > A[j])
    					{
    						A[i] ^= A[j];
    						A[j] ^= A[i];
    						A[i] ^= A[j];
    					}
    				}
    
    
    			}
    			int i;
    				for (i = 0; i < N; i++)
    				{
    					if (L>sum)
    					{
    						sum += A[i];
    					}
    					else
    					{
    						break;
    					}
    				}
    				printf("%d\n", i);
    				sum = 0;
    		}
    
    	}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    #include<stdlib.h>
    #include<algorithm>
    int cmp(const void* a,const void* b)  //从大到小
    {
        return *(int *)b - *(int *)a;
    }
    int main()
    {
        int L,N,i,j,count,k;
        int ss[700];
        while(scanf("%d%d",&L,&N)!=EOF)
        {
            for(i=0;i<N;i++)
            {
                scanf("%d",&ss[i]);
            }
            qsort(ss,N,sizeof(ss[0]),cmp);
      //      for(i=0;i<N;i++)
        //    printf("%d ",ss[i]);
            count=0;k=0;j=0;
                for(i=0;i<N;i++)
                {
                    if(ss[i]+k < L)
                    {
                        k+=ss[i];
                        count++;
                    }
                    else
                    {
                        count++;
                        j=1;
                        printf("%d\n",count);
                        break;
                    }
                }
                if(j==0)
            printf("impossible\n");
        }
        return 0;
    }
    

    Java :

    import java.util.Scanner;
    
    
    
    class Main {
    	
    	public static void main(String[] args) {
    		Scanner first=new Scanner(System.in);
    		while(first.hasNext())
    		{
    			int L=first.nextInt();
    			int N=first.nextInt();
    			int[] Ai=new int[N];
    			for (int i = 0; i < N; i++) 
    			{
    				Ai[i]=first.nextInt();
    			}
    			//Arrays.sort(Ai);
    			for (int i = 0; i < Ai.length-1; i++) 
    			{
    				for (int j = i+1; j < Ai.length; j++) 
    				{
    					if(Ai[i]<Ai[j])
    					{
    						int s=Ai[i];
    						Ai[i]=Ai[j];
    						Ai[j]=s;
    					}
    				}
    			}
    			int AiSum=0;
    			int count=0;
    			boolean flag=true;
    			/*for(int i=N-1;i>=0;i--)
    			{
    				AiSum+=Ai[i];
    				count++;
    				if(AiSum>=L)
    				{
    					System.out.println(count);
    					flag=false;
    					break;
    				}
    			}*/
    			for (int i = 0; i < Ai.length; i++) 
    			{
                    if(Ai[i]+AiSum < L)  
                    {  
                    	AiSum+=Ai[i];  
                        count++;  
                    }  
                    else  
                    {  
                        count++;  
                        System.out.println(count); 
                        flag=false;
                        break;  
                    } 
    			}
    			if(flag)
    			{
    				System.out.println("impossible");
    			}
    		}
    	}
    }
    
    • 1

    信息

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