#10588. 珅泽教育CSP-J第一轮模拟考第十三套 第 41 题

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

第2题

给定 nn 根火柴的长度 a1,a2,,ana_1,a_2,\ldots,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)____;
        auto s1 = solve(i+1, x + a[i], y, z);
        auto s2 = solve(i+1, x, y + a[i], z);
        auto s3 = solve(i+1, x, y, z + a[i]);
        mem ____(3)____ = true;
        return value ____(4)____ = ____(5)____;
    }
    else {
        if ( ____(6)____ ) return 0;
        i64 p = ____(7)____ ;
        return ____(8)____ ;
    }
}

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

(1)、(2)、(3)、(4)处应填( )。

{{ select(1) }}

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