新聞中心
假設(shè)要把長(zhǎng)度為 n 厘米的木棒切分為 1 厘米長(zhǎng)的小段,但是 1 根木棒只能由 1 人切分,當(dāng)木棒被切分為 3 段后,可以同時(shí)由 3 個(gè)人分別切分木棒( 圖2 )。
求最多有 m 個(gè)人時(shí),最少要切分幾次。譬如 n = 8,m = 3 時(shí)如下圖所示,切分 4 次就可以了。

問(wèn)題1
求當(dāng) n = 20,m = 3 時(shí)的最少切分次數(shù)。
問(wèn)題2
求當(dāng) n = 100,m = 5 時(shí)的最少切分次數(shù)。
package main
import "fmt"
func cutbar(n,m,current int)int{
if current >= n{
return 0
}else if current <= m{
return 1 + cutbar(n,m,current*2)
}else {
return 1 + cutbar(n,m,current+m)
}
}
func main(){
times := cutbar(20,3,1)
fmt.Println(times)
times2 := cutbar(100,5,1)
fmt.Println(times2)
}
這里使用遞歸函數(shù)較為方便,n是棍子厘米數(shù),m是人數(shù),current是當(dāng)前棍子的段數(shù)。
- 每次運(yùn)算查看當(dāng)前棍子段數(shù)量少于等于人數(shù),則棍子數(shù)量翻倍,返回切分棍子的次數(shù)加1;
- 棍子段數(shù)且少于厘米數(shù),則棍子不能全被切翻倍,只能增加m個(gè),返回切分棍子的次數(shù)加1;
- 當(dāng)棍子段數(shù)大于等于厘米數(shù)時(shí),表示已切完,不用再切了,返回次數(shù)為0。
結(jié)果是8和22.
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
標(biāo)題名稱:切棍子-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.dlmjj.cn/article/jgipc.html


咨詢
建站咨詢
