Skip to content

Pro4

原始文件为 CPP 代码,本文是转换后的 Markdown 文件。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <vector>

using namespace std;

int mymin(int a, int b)
{
    if (a < 0) return b;
    else if (b < 0) return a;
    else if (a < b) return a;
    else return b;
}

int result[1005][1005];
int sum[1005];

void init()
{
    memset(sum,0,sizeof(sum));
    memset(result,-1,sizeof(result));
    for (int i = 0; i < 1005; ++i) result[i][i] = 0;
}

int main() 
{
    freopen("in.txt","r",stdin);

    int num; scanf("%d",&num);
    for (int i = 1; i <= num; ++i)
    {
        int value; scanf("%d",&value);
        sum[i] = sum[i-1] + value;
    }

    for (int time = 1; time < num; ++time)
    {
        for (int i = 1; i <= num-time; ++i)
        {
            int j = i + time;
            for (int k = i; k < j; ++k)
            {
                result[i][j] = mymin(result[i][j],result[i][k]+result[k+1][j]+sum[j]-sum[i-1]);
            //  printf("result[%d][%d] = %d\n", i, j, result[i][j]);
            }
        }
    }

    cout << result[1][num] << endl;
}