1 条题解

  • 0
    @ 2025-10-10 20:11:58

    C :

    #include <stdio.h>
    
    int main()
    {
        int i, j, k, l, n;
        int a[100];
        int count = 0;
        scanf("%d", &n);
        for (i = 0; i < n; i++)
            scanf("%d", &a[i]);
        
        for (i = n; i > 1; i--)
        {
            k = 0, l = 1;
            if (a[0] < a[1])
                k = 1, l = 0;
            for (j = 2; j < i; j++)
            {
                if (a[j] <= a[k])
                {
                    if (a[j] < a[l])
                        k = l, l = j;
                    else
                        k = j;
                }
            }
            a[l] += a[k];
            count += a[l];
            for (j = k; j < i - 1; j++)
                a[j] = a[j + 1];
        }
        printf("%d", count);
        return 0;
    }
    
    

    C++ :

    #include <stdio.h>
    
    int main()
    {
        int i, j, k, l, n;
        int a[100];
        int count = 0;
        scanf("%d", &n);
        for (i = 0; i < n; i++)
            scanf("%d", &a[i]);
        
        for (i = n; i > 1; i--)
        {
            k = 0, l = 1;
            if (a[0] < a[1])
                k = 1, l = 0;
            for (j = 2; j < i; j++)
            {
                if (a[j] <= a[k])
                {
                    if (a[j] < a[l])
                        k = l, l = j;
                    else
                        k = j;
                }
            }
            a[l] += a[k];
            count += a[l];
            for (j = k; j < i - 1; j++)
                a[j] = a[j + 1];
        }
        printf("%d", count);
        return 0;
    }
    
    

    Pascal :

    var i,j,k,m,n,t,s:longint;
        a:array[1..500]of longint;
    begin
      readln(n);
      for i:=1 to n do
        read(a[i]);
      for i:=1 to n-1 do
        begin
          for j:=i+1 to n do
          begin
            if a[i]>a[j] then
              begin
                t:=a[i];
                a[i]:=a[j];
                a[j]:=t;
              end;
          end;
      end;
      s:=0;
      k:=0;
    repeat
     a[1]:=a[1]+a[2];
     a[2]:=a[n-k];
     a[n-k]:=0;
     s:=a[1]+s;
       for i:=1 to n-k-2 do
         begin
           for j:=i+1 to n-k-1 do
             begin
               if a[i]>a[j] then
                 begin
                   t:=a[i];
                   a[i]:=a[j];
                   a[j]:=t;
                 end;
             end;
         end;
         inc(k);
     until k=n-1;
     writeln(s);
    end.
    

    Java :

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		while (scanner.hasNext()) {
    			int num = scanner.nextInt();
    			int[] pi = new int[num];
    
    			for (int i = 0; i < num; i++)
    				pi[i] = scanner.nextInt();
    
    			int sum = 0;
    			int k = 0;
    
    			while (num > 1) {
    				Arrays.sort(pi);
    				k = pi[0] + pi[1];
    				sum = sum + k;
    				pi[0] = k;
    				pi[1] = Integer.MAX_VALUE;
    				num--;
    			}
    
    			System.out.println(sum);
    
    		}
    	}
    }
    
    • 1

    信息

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