1274:【例9.18】合并石子

【算法分析】

【算法分析】

首先我們要先讀懂題意,可能有部分同學在讀題的時候就有點難以理解。

我們首先來分析一個比較簡單的問題,現在一共有三堆石頭,每堆石子的數量分別是3,4,11。求合并成一堆石頭的最小得分。
對于這個問題,只有兩種選擇:
前兩堆石頭合并再和第三堆石頭合并。
3+4=7 ——> 7 石堆變為(7, 11)
7+11=18——>18 石堆變為(18)
cost=7+18=25
后兩堆石頭合并再和第一堆石頭合并。
4+11=15——>15 石堆變為(3,15)
3+15=18——>18 石堆變為(18)
cost=15+18=33

易看出先合并前兩堆的石子的花費比較小,不同的合并方式會造成不同的得分。同時可以發現這兩種方法最后一次的得分就是石頭的總數。

狀態定義:s[i]表示前i堆石頭的價值總和,第i堆到第j堆石子數量加和為s[j]-s[i-1]

f[i][j]表示把第i堆到第j堆的石頭合并成一堆的最優值。將第i堆到第i堆合并為1堆,不需要操作,不會產生得分,得分為0。因此:f[i][i]=0

集合:將第i到第j堆石子合并為一堆的方案 在合為一堆時,第i到第j堆石子一定已經通過某種方案合并成了相鄰的左右兩堆。然后這兩堆合為一堆,這次合并產生的得分為第i到第j堆石子數量的加和s[j]-s[i-1]。設一個k∈[i,j); ?

? ? for (i=n-1; i>=1; i--)
? ? ? for (j=i+1; j<=n; j++)
? ? ? ? for (k=i; k<=j-1; k++)
? ? ? ? ? f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+s[j]-s[i-1]);

最后輸出第1堆到第n堆合并能得到的最小分數f[1][n]

【參考代碼】

#include<bits/stdc++.h>
using namespace std;
int f[101][101], s[101], n,i,j,k,x;
int main() {scanf("%d",&n);for (i=1; i<=n; i++) {scanf("%d",&x);s[i]=s[i-1]+x;}memset(f,0x3f,sizeof(f));  for (i=1; i<=n; i++) f[i][i]=0;   for (i=n-1; i>=1; i--)for (j=i+1; j<=n; j++)for (k=i; k<=j-1; k++)f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+s[j]-s[i-1]);printf("%d\n",f[1][n]);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hanlp自然語言處理如何再Spring Boot中使用

一、HanLP HanLP (Hankcs NLP) 是一個自然語言處理工具包&#xff0c;具有功能強大、性能高效、易于使用的特點。HanLP 主要支持中文文本處理&#xff0c;包括分詞、詞性標注、命名實體識別、依存句法分析、關鍵詞提取、文本分類、情感分析等多種功能。 HanLP 可以在 Java、Py…

【LeetCode每日一題】2270.分割數組的方案數

https://leetcode.cn/problems/number-of-ways-to-split-array/description/ 題目&#xff1a; 給定一個數組&#xff0c;從 下標為 index 的地方切開&#xff0c;左邊的數大于右邊&#xff0c;保證右邊至少有一個數。 思路一&#xff1a; 遍歷數組&#xff0c;用prefixArr …

運用企業微信構建內部外部溝通橋梁的策略

隨著互聯網技術的普及和移動設備的廣泛使用&#xff0c;企業微信作為企業內部協作和溝通的重要工具&#xff0c;發揮著越來越重要的作用。其中&#xff0c;企業微信的社群功能為信息的傳播和交流提供了新的途徑。通過建立活躍的企業微信社群&#xff0c;不僅可以加強員工之間的…

部署Nextcloud詳細步驟及優化方法

一、安裝PHP8.0以上 我這里使用PHP8.0.30 [rootlocalhost ~]# php -v PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.30, Copyright (c) Zend Technologies [rootlocalhost ~]# 安裝方法參考 二、安裝MY…

[算法基礎 ~排序] Golang 實現

文章目錄 排序什么是排序排序的分類1. 冒泡1.1 冒泡排序1.2. 快速排序 2. 選擇2.1 簡單選擇排序2.2 堆排序 3. 插入3.1 直接插入3.2 折半插入3.3 希爾排序 4. 歸并排序代碼實現 5. 基數排序 排序圖片就不貼了吧 排序 什么是排序 以下部分動圖來自CSDN ::: tip 穩定性的概念 …

linux創建新用戶

在Linux中&#xff0c;可以使用useradd命令來創建新用戶。以下是創建新用戶的基本步驟&#xff1a; 打開終端或命令行界面。輸入以下命令并按下回車鍵創建新用戶&#xff1a; sudo useradd -m -s /bin/bash username 其中&#xff0c;-m選項表示同時創建用戶主目錄&#xff…

【Kubernetes】存儲類StorageClass

存儲類StorageClass 一、StorageClass介紹二、安裝nfs provisioner&#xff0c;用于配合存儲類動態生成pv2.1、創建運行nfs-provisioner需要的sa賬號2.2、對sa授權2.3、安裝nfs-provisioner程序 三、創建storageclass&#xff0c;動態供給pv四、創建pvc&#xff0c;通過storage…

mysql:用SHOW COLUMNS FROM顯示一個表的列信息

可以使用命令SHOW COLUMNS FROM table_name;顯示一個表的列信息&#xff0c;例如&#xff1a;

Java se的語言特征之多態

目錄 滿足多態的條件動態綁定第一步動態綁定第二步動態綁定第三步參數列表,返回類型,訪問修飾限定符區別有動態綁定,那是不是有靜態綁定向下轉型抽象類接口實現多個接口(先繼承再接口,接口用",") 滿足多態的條件 定義:去完成某個狀態的時候,當不同的對象去完成的時候…

MTK Android13 user版本進入engineermode的Bluetooth測試項時閃退

平臺&#xff1a;MT6771 android13 問題描述&#xff1a;進入到工模&#xff0c;點擊進入Bluetooth測試項直接閃退 Log如下&#xff1a; 07-31 10:15:51.480 3605 3605 D EM/EmUtils: getEmAidlService ... 07-31 10:15:51.481 398 398 I servicemanager: Could not fin…

42、JSON 函數

目錄 1. json 的兩個常用方法 json.dumps()方法 &#xff1a;把python對象編碼為json字符串 json.loads()方法&#xff1a;把json字符串編碼成python對象 1. json 的兩個常用方法 json 的存在有兩種形式。 一種是&#xff1a;對象的形式存在&#xff0c;我們叫它 json 對象。…

36V H 橋有刷直流驅動芯片GC8870 GC8871 GC8872的數據選型分析

36V H 橋驅動芯片GC8870 GC8871 GC8872都可替代TI的DRV8870/8871/8872&#xff0c;寬電壓&#xff0c;內置電荷泵&#xff0c;短地短電源保護&#xff0c;限流等功能&#xff0c;可應用于水泵&#xff0c;掃地機器人&#xff0c;開關等產品中

數據庫系統 --- 關系模型

一、關系模型的數據結構以及形式化定義 1.關系 域&#xff1a;一組具有相同數據結構的值的集合。 笛卡爾積&#xff1a;域上的一種集合運算。多個集合做笛卡爾積的結果是每個集合取一個元素組合得到的一個新的集合。 域的基數&#xff1a;一個域上允許的不同取值的個數。 關系&…

mac 安裝anaconda和lightgbm

mac安裝anaconda不要去清華大學的anaconda的安裝包列表去下載安裝包, 去[官網](Free Download | Anaconda)下載, 清華的版本太老了, 老到臉conda 安裝lightgbm都不只支持 安裝好anaconda 后, 能用conda install xxx 的盡量不用pip install 其他的不知道, 用pip install ligh…

護眼臺燈為什么護眼?適合備考使用的臺燈推薦

臺燈是大家生活中必不可少的一盞燈具&#xff0c;尤其是當夜幕降臨時&#xff0c;許多仍然需要工作、或者學習的人&#xff0c;都要使用臺燈來提供充足的照明環境。如今隨著生活的高度發展&#xff0c;大家對臺燈的要求也愈發精進了一步&#xff0c;不僅需要能夠提供照明的&…

報表控件FastReport .NET v2024功能演示—更改圖圖片形狀

報表生成器FastReport .NET 是適用于.NET Core 3&#xff0c;ASP.NET&#xff0c;MVC和Windows窗體的全功能報告庫。使用FastReport .NET&#xff0c;您可以創建獨立于應用程序的.NET報告。 FastReport .net下載&#xff08;qun&#xff1a;585577353&#xff09;https://www.e…

webpack的使用

一、5 大核心概念 entry&#xff08;入口&#xff09; 指示 Webpack 從哪個文件開始打包 output&#xff08;輸出&#xff09; 指示 Webpack 打包完的文件輸出到哪里去&#xff0c;如何命名等 loader&#xff08;加載器&#xff09; webpack 本身只能處理 js、json 等資源…

配電箱安全檢查

配電箱怎么檢查&#xff0c;如何識破電箱安全隱患&#xff1f; &#xff08;1&#xff09;一物一碼&#xff1a;每個配電箱都有獨一無二標識二維碼&#xff0c;巡檢人員到達現場掃碼即可填寫巡檢記錄&#xff0c;查看配電箱的參數、負責人、操作規則等信息&#xff1b; &#x…

如何用PHP寫一個1688平臺下的商品API接口代碼?

一 定義 PHP&#xff08;全稱&#xff1a;Hypertext Preprocessor&#xff09;是一種廣泛用于開發Web應用程序的服務器端腳本語言。它是一種開源的編程語言&#xff0c;特別適用于快速構建動態網頁和Web應用程序。 在PHP中&#xff0c;您可以使用1688商品API接口來獲取和操作…

韻達速遞查詢,韻達速遞單號查詢,對需要的單號記錄進行標記

批量查詢韻達速遞單號的物流信息&#xff0c;對需要的單號記錄進行標記。 所需工具&#xff1a; 一個【快遞批量查詢高手】軟件 韻達速遞單號若干 操作步驟&#xff1a; 步驟1&#xff1a;運行【快遞批量查詢高手】軟件&#xff0c;并登錄 步驟2&#xff1a;點擊主界面左上角…