C语言求解C Programming Language

如图,C语言编程565593 C Programming Language 采纳嘎嘎快

img

img

运行结果:

img

img

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>


int merge(int a[], int n)
{
    int tmp, max = 0;
    int t, i, j, k;
    int* p;
    if (n == 1)
        return a[0];
    else if (n == 2)
        return a[0] * a[1];
    else
    {
        max = 0;
        for (i = 0; i < n; i++)
        {
            for (j = i+1; j < n; j++)
            {
                p = (int*)malloc(sizeof(int) * (n - 1));
                for (t = 0, k = 0; k < n; k++)
                {
                    if (k != i && k != j)
                        p[t++] = a[k];
                }
                p[n - 2] = a[i] + a[j];
                tmp = a[i]*a[j] + merge(p, n - 1);
                if (tmp > max)
                    max = tmp;
                delete[] p; p = 0;
            }


        }
        return max;
    }
}

int main()
{
    int n;
    int* a = 0;
    int maxscore = 0, score;
    int i, j;
    scanf("%d", &n);
    a = (int*)malloc(sizeof(int) * n);
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);

    maxscore = merge(a, n);
    printf("%d", maxscore);
    delete[] a;
    a = 0;
    return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632