當前位置:首頁 » 操作系統 » 演算法石子

演算法石子

發布時間: 2023-02-23 07:19:23

演算法訓練 石子游戲 python

演算法訓練 石子 游戲

問題描述

石子 游戲 的規則如下:

地上有n堆石子,每次操作可選取兩堆石子(石子個數分別為x和y)並將它們合並,操作的得分記為(x+1) (y+1),對地上的石子堆進行操作直到只剩下一堆石子時停止 游戲 。

請問在整個 游戲 過程中操作的總得分的最大值是多少?

輸入格式

輸入數據的第一行為整數n,表示地上的石子堆數;第二行至第n+1行是每堆石子的個數。

輸出格式

程序輸出一行,為 游戲 總得分的最大值。

樣例輸入

10

5105

19400

27309

19892

27814

25129

19272

12517

25419

4053

樣例輸出

15212676150

數據規模和約定

1 n 1000,1 一堆中石子數 50000

思路:

運用貪心演算法思想,每次都取石子數量最多和第二多的兩堆石子進行合並操作(進行排序操作後取前兩個數),即可得到每次操作的得分為最大,最後再將每次的操作得分最大值相加求和即可得到整個 游戲 過程中操作的總得分的最大值。

代碼:

歡迎大家採納和指正!

更多內容請持續關注該賬號或CSDN的 RuthlessL!

❷ 數學(取石子游戲)

每次取的數量有沒有限制啊?如果沒有限制,第一步取哪一堆都沒有關系,只要把它全部取走,然後,無論乙取哪一堆,甲也取哪一堆,而且,讓這一堆只剩下一顆;如果乙已經取到只剩下一顆了,甲就取其他的,並且取到只剩下一顆;如果乙將一堆全部取走,甲也將另一堆全部取走.甲只要記得:保留偶數堆和做到每堆只剩一顆,有了這樣的策略,最後結果就會出現偶數堆,而且每堆只剩一顆,輪到乙取,最後一顆就一定是甲得的.

❸ 石子重量折方量的演算法

石子的堆積密度不一,一般是1.5噸/方左右。
重量(噸)÷1.5=體積(方)

❹ 石子合並問題C語言求優秀演算法

用動態規劃
注意:石子合並問題和最優二叉樹是不同的。
我們先考慮求最大分值。
用a數組存放原來N堆石子的初始數量,下標從0開始。
每一次合並是對現在的某兩堆相鄰石子的,而這相當於將初始時的的若干堆石子合並。
用b[i,j]表示將從初始的第j堆石子開始,循環向後共i堆石子合並的最大分值。 (第N-1堆石子後面是第0堆)
假設最後一次是前k堆合並成的一堆和剩下的i-k堆石子合並成的一堆進行合並。所以總分值就是:這兩堆各自合並的總得分 加上 最後一次全部合並的得分。
狀態轉移方程 b[i,j]=max{ b[k,j]+b[i-k,(j+k) mod N] | k=1..i-1 } + a[j] +…+ a[(j+i-1) mod N] b[1,i]=0, i=0..n-1
最後,解就是b[N,0]到b[N,N-1]中的最大值。

❺ 石子合並問題C語言求優秀演算法

先將石頭求和再除2得m,求<=m得那一堆石頭,再用背包法(動態規劃思想,高效)或直接回朔搜索(20較小,也會輕松搞定)。
一般動態規劃相比搜索寫代碼要簡單多,但背包那問題涉及到內存的申請和釋放等指針問題就有點列外啦,呵呵,小弟也沒寫,簡單指導下。拋磚引玉。。。。。

❻ 30個石子分成7份,每份都是單數,怎麼分

30為基數,分7份,每份為單數,30以內單數為15個。其中最小的7個單數是
1
3
5
7
9
11
13
和為49!

熱點內容
預演算法優點 發布:2025-08-13 08:13:35 瀏覽:991
伺服器台式電腦配置要求 發布:2025-08-13 08:08:23 瀏覽:994
最短作業優先演算法 發布:2025-08-13 08:07:00 瀏覽:231
linux查看arp 發布:2025-08-13 07:53:30 瀏覽:477
為什麼刷機還要弄以前的解鎖密碼 發布:2025-08-13 07:47:14 瀏覽:274
acfun如何上傳 發布:2025-08-13 07:35:10 瀏覽:272
ftp共享伺服器需要什麼配置 發布:2025-08-13 07:33:00 瀏覽:545
主要資料庫 發布:2025-08-13 07:15:27 瀏覽:180
壓縮包漫畫 發布:2025-08-13 07:15:25 瀏覽:133
伺服器空島原版如何獲得礦物 發布:2025-08-13 07:08:22 瀏覽:439