喬治棍子演算法JAVA實現

2021-07-11 07:25:10 字數 1357 閱讀 8814

喬治拿來一組等長的木棒,將它們隨機地裁斷,使得每一節木棍的長度都不超過50個長度單位。

然後他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。

請你設計乙個程式,幫助喬治計算木棒的可能最小長度。每一節木棍的長度都用大於零的整數表示。

package algorithm;

public class sticktest ;

//獲取棍子2分次數

int splitcount=sticksplit.length/2;

if(sticksplit.length%2!=0)

//陣列預設-1;

splitcount=splitcount-1;

//排序

sticktest.sort(sticksplit);

//求和

int sum=arraysum(sticksplit);

system.out.println("總長度為"+sum);

//定義棍子長度預設為0

int stickminlength=sticksplit.length;

//預設棍子的最小長度為sum/sticksplit.length如果

if(sticksplit[0]>sum/sticksplit.length)

system.out.println("假設有"+stickminlength+"根棍子");

if(sum%stickminlength==0)

//遍歷校驗

boolean flaga=true;

//定義模擬長度

doaa:do

if(ia>=splitcount||ibstickdefinelength)

//如果發現模擬長度為棍子最大長度則向下繼續拼接

if(sticksplit[ia]==stickdefinelength)

//深度拼接 開始 和最小數組成是否等於定義長度

boolean flagaa=true;

int thisvalue=sticksplit[ia]+sticksplit[ib];

do//如果拼接後發現相等則進行下次拼接

if(thisvalue==stickdefinelength)

//發現小,則繼續加最小值

if(thisvalue1);

}system.out.println("最小長度為"+stickminlength);

system.out.println("棍子長度為"+sum/stickminlength);

} //求和

public static int arraysum(intarr){

int sum=0;

for(int i=0;i

進化演算法 拯救大龜喬治

十九世紀,達爾文在加拉帕戈斯群島觀察象龜時發現,在不同的島嶼環境下,象龜的形態也不同。在高地島的濕潤環境下,象龜體積更大,有著半球形的龜殼和短脖子,而在低地島的乾燥環境下,象龜體積更小,有著馬鞍形狀的龜殼和長脖子。這些差異引發了達爾文的思考,也為日後演化論的誕生做了鋪墊。下圖為四種象龜,可以看出性狀...

kruskal 演算法java實現

public class class kruskal,初始化graphic中點和點的距離,32767表示距離無窮大 另外乙個測試用例是 label new int list graph.length for int i 0 i label.length i 初始化標記 int j int label...

排序演算法java實現

以下文章 亦風亦塵的空間http blog.csdn.net lschou520 archive 2008 10 29 3176422.aspx 插入排序 package org.rut.util.algorithm.support import org.rut.util.algorithm.sor...