国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

石子合并(一)

2019-11-10 17:17:05
字體:
供稿:網(wǎng)友

石子合并(一)

時(shí)間限制:1000 ms  |  內(nèi)存限制:65535 KB難度:3描述    有N堆石子排成一排,每堆石子有一定的數(shù)量。現(xiàn)要將N堆石子并成為一堆。合并的過程只能每次將相鄰的兩堆石子堆成一堆,每次合并花費(fèi)的代價(jià)為這兩堆石子的和,經(jīng)過N-1次合并后成為一堆。求出總的代價(jià)最小值。

輸入有多組測試數(shù)據(jù),輸入到文件結(jié)束。每組測試數(shù)據(jù)第一行有一個(gè)整數(shù)n,表示有n堆石子。接下來的一行有n(0< n <200)個(gè)數(shù),分別表示這n堆石子的數(shù)目,用空格隔開輸出輸出總代價(jià)的最小值,占單獨(dú)的一行樣例輸入
31 2 3713 7 8 16 21 4 18樣例輸出
9

239

還是有些迷迷糊糊,師兄說還可以用四邊形不等式優(yōu)化,還不會(huì),以后再補(bǔ)充。

#include <iostream>#include <cstdio>#define INF 100000000#define N 205using namespace std;int main(){    int n,i,j;    int a[N],sum[N],dp[N][N];    while(~scanf("%d",&n)&&n)    {        sum[0]=0;        for(i=1;i<=n;i++)        {            scanf("%d",&a[i]);            dp[i][i]=0;            sum[i]=sum[i-1]+a[i];        }        //題目要求是相鄰的        for(int l=2;l<=n;l++)//2,3,4堆合并        {            for(i=1;i<=n-1+1;i++)            {                j=i+l-1;                dp[i][j]=INF;                for(int k=i;k<=j;k++)                    dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);            }        }        PRintf("%d/n",dp[1][n]);    }    return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 柞水县| 肥城市| 嵊泗县| 宜兰县| 康马县| 山阳县| 泸州市| 融水| 宝丰县| 色达县| 鹿邑县| 化州市| 双江| 平果县| 酒泉市| 商洛市| 郧西县| 阜康市| 松阳县| 涿鹿县| 南漳县| 崇州市| 阿巴嘎旗| 新巴尔虎左旗| 汶上县| 双牌县| 武邑县| 年辖:市辖区| 东丰县| 玉龙| 平舆县| 淳化县| 宜君县| 汾阳市| 胶南市| 莱芜市| 湘阴县| 松溪县| 东乡县| 额济纳旗| 长阳|