日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ssl1597-石子合并问题【区间dp练习】

發(fā)布時(shí)間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssl1597-石子合并问题【区间dp练习】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Description
  在一個(gè)圓形操場(chǎng)的四周擺放著n 堆石子。現(xiàn)要將石子有次序地合并成一堆。規(guī)定每次只能選相鄰的2 堆石子合并成新的一堆,并將新的一堆石子數(shù)記為該次合并的得分。試設(shè)計(jì)一個(gè)算法,計(jì)算出將n堆石子合并成一堆的最小得分和最大得分。
編程任務(wù):
  對(duì)于給定n堆石子,編程計(jì)算合并成一堆的最小得分和最大得分。


Input

輸入包括多組測(cè)試數(shù)據(jù),每組測(cè)試數(shù)據(jù)包括兩行。

第1 行是正整數(shù)n,1<=n<=100,表示有n堆石子。
第2行有n個(gè)數(shù),分別表示每堆石子的個(gè)數(shù)。



Output
對(duì)于每組輸入數(shù)據(jù),輸出兩行。

第1 行中的數(shù)是最小得分;第2 行中的數(shù)是最大得分。


Sample Input
4
4 4 5 9

Sample Output
43

54


解題思路

? 看這題之前請(qǐng)補(bǔ)一下:http://blog.csdn.net/mr_wuyongcong/article/details/78815773

? 這道題是石子合并的升級(jí)版,這里把改成了圓形,那么說(shuō)明第一堆和最后一堆也可以合并,這道題我用了一種不同的方法。可以先把所有兩個(gè)的和在一起,再把所有的三個(gè)的合在一起......以此類推。然后列出動(dòng)態(tài)轉(zhuǎn)移方程:

? mins=min(mins,f[i][k]+f[k+1][j]+s[j]-s[i-1])
? maxs=max(maxs,f1[i][k]+f1[k+1][j]+s[j]-s[i-1])

還是代碼講的清楚


代碼

#include<cstdio>
#include<iostream>
using namespace std;
int n,x,s[201],f[201][201],f1[201][201],maxs,mins,a[201];
int main()
{
? scanf("%d",&n);
? for (int i=1;i<=n;i++)
? {
? ? scanf("%d",&a[i]);
? ? a[n+i]=a[i];//環(huán)狀相連
? }
? for (int i=1;i<=2*n;i++)
? s[i]=s[i-1]+a[i];//預(yù)處理不解釋
? for (int ii=2;ii<=n;ii++)//如我所說(shuō)↑
? ? for (int i=1;i<=2*n-ii+1;i++)//枚舉開(kāi)頭
? ? {
int mins=2147483647,maxs=0,j=i+ii-1;//如我所說(shuō)↑
for (int k=i;k<j;k++)//枚舉分裂點(diǎn)
{
?mins=min(mins,f[i][k]+f[k+1][j]+s[j]-s[i-1]);
? maxs=max(maxs,f1[i][k]+f1[k+1][j]+s[j]-s[i-1]);

? //動(dòng)態(tài)轉(zhuǎn)移方程
}
f[i][j]=mins;//最小值存入
f1[i][j]=maxs;//最大值存入
? ? }
? int mins=2147483647,maxs=0;
? for (int i=1;i<=n;i++)
? {
? ? maxs=max(maxs,f1[i][i+n-1]); //求每個(gè)區(qū)域的最大值
? ? mins=min(mins,f[i][i+n-1]); //求每個(gè)區(qū)域的最小值
? }
? printf("%d\n%d",mins,maxs);//get√
}



總結(jié)

以上是生活随笔為你收集整理的ssl1597-石子合并问题【区间dp练习】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。