Optimal Binary Search Tree

来源:互联网 发布:ubuntu 安装php7 编辑:程序博客网 时间:2024/05/22 12:29
#include <iostream>#include <string.h>#include <stdlib.h>#include <stdio.h>using namespace std;#define MAXN 300#define INF 0x1f1f1f1fint n;int f[MAXN];int dp[MAXN][MAXN];int sum[MAXN];void input(){    sum[0] = 0;    for( int i = 1; i <= n; i++)    {        scanf("%d",&f[i]);        sum[i] = sum[i-1] + f[i];    }}int main(){    while(scanf("%d",&n) != EOF)    {        input();        memset(dp, 0, sizeof(dp));        for( int k = 1; k < n; k++)        {            for( int i = 1; i + k <= n; i++)            {                dp[i][i+k] = INF;                for( int l = i ; l <= i + k; l++)                {                    dp[i][i+k] = min(dp[i][l-1] + dp[l + 1][i+k] + sum[i + k] - sum[i - 1] - f[l]  , dp[i][i+k] );                }            }        }      printf("%d\n",dp[1][n]);    }}
0 0