#1867. 珅泽教育CSP-J第一轮模拟考第十套 第 36 题

珅泽教育CSP-J第一轮模拟考第十套 第 36 题

三、完善程序(单选题,每小题3分,共计30分)

第1题

给定 nn 根火柴的长度 a1,a2,,ana_1,a_2,\cdots,a_n,请用这些火柴围成一个面积最大的三角形。注意所有的火柴都必须用上,不得丢弃。输出最大三角形的面积。假设最大面积为 ss,则输出 16s216s^21ai401 \le a_i \le 40,数据保证至少有一种方案可以围成三角形。

#include<iostream>
using i64 = long long;
int n;
int a[40];
bool mem[40][40*40][40*40];
i64 value[40][40*40][40*40];

i64 solve(int i, int x, int y, int z)
{
    if (i < n)
    {
        if (mem ____(1)____ > 0)
            return value ____(2)____;
        i64 s1 = solve(i+1, x + a[i], y, z);
        i64 s2 = solve(i+1, x, y + a[i], z);
        i64 s3 = solve(i+1, x, y, z + a[i]);
        mem[i][x][y] = true;
        return value[i][x][y] = ____(3)____;
    }
    else
    {
        if ( ____(4)____ ) return 0;
        i64 p = ____(5)____ ;
        return ____(6)____ ;
    }
}

int solve()
{
    std::cin >> n;
    for (int i = 0; i < n; ++i)
    {
        std::cin >> a[i];
    }
    std::cout << solve(0, 0, 0, 0);
}

(1)(2) 处应填( )。

{{ select(1) }}

  • [i][x][y],[i][x][y]
  • [i][x][y],[x][y][z]
  • [x][y][z],[i][x][y]
  • [x][y][z],[x][y][z]