求助(样例都没过)
查看原帖
求助(样例都没过)
718762
qilian_mountain楼主2023/9/1 21:58
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
int dp[1001][1001] = {};
int length;
class nodes
{
    int* num = new int[length + 1];
public:
    nodes()
    {
        for (int i = 1; i <= length; i++)
            num[i] = 0;
    }
    void innum()
    {
        for (int i = 1; i <= length; i++)
            scanf("%d", &num[i]);
    }
    int& operator [](int i)
    {
        int x = (i <= length ? num[i] : num[i - length]);
        return x;
    }
    void print()
    {
        for (int i = 1; i <= length; i++)
            cout << num[i] << endl;
    }
};
int main()
{
    cin >> length;
    nodes yj;
    yj.innum();
    for (int i = 1; i < length; i++)
    {
        for (int j = 1; j <= length; j++)
        {
            for (int k = j; k < j + i; k++)
            {
                if (i == j)
                    continue;
                dp[i][j] = max(dp[j][j + i], dp[j][k] + dp[k + 1][j + i] + yj[j] * yj[k + 1] * yj[j + i]);
            }
        }
    }
    cout << dp[1][length];
    return 0;
}
2023/9/1 21:58
加载中...