自学内容网 自学内容网

图形最高分

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int arr[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(int i=0;i<n-1;i++)//进行从大到小排序
    {
        for(int j=i+1;j<n;j++)
        {
            if(arr[i]<arr[j])
            {
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }
    int s=0;
    for(int i=0;i<n-1;i++)// a b c(a>b>c)  s=a*b+(a+b)*c
    {
        s=s+arr[i]*arr[i+1];
        arr[i+1]=arr[i]+arr[i+1];
    
        
    }
    printf("%d",s);
    
    
    
    
    return 0;
}

题目描述

游戏一开始,玩家在每一轮可以合并两个图形,当只有一个图形的时候游戏结束,每个图形都有一个大小,合并完成后的图形的大小为x+y,x和y分别为合并之前的两个图形,与此同时,玩家会获得x*y的分数。
现在屏幕上出现了n个图形,每个图形的大小已知,请算出最大能获得的分数

输入描述

第一行输入一个整数n (2≤n≤100)
第二行输入n个整数范围在1到100之间

输出描述

输出一个整数代表最大能获得的分数

样例输入

3
1 2 3

样例输出

11

原文地址:https://blog.csdn.net/2401_87987385/article/details/143837715

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!