喬治拿來一組等長的木棒,將它們隨機地裁斷,使得每一節木棍的長度都不超過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...