數字拆分成4段,怎樣使得4段的乘積最小

2021-07-16 16:16:13 字數 865 閱讀 3102

題目是:給出乙個數字(10,000~100,000,000),把這個數字拆分成4段,怎樣使得4段的乘積最小。比如12345拆分成1*2*3*45=270, 10000=1*00*0*0=0。

題目分析:

這道題很明顯能用動態規劃(dp)來求解,用dp(i,j)表示:以指向第j個位置字的符結束的字串還需要分為i份所得到的最小乘積,那麼題目中的12345的正解就是dp(4,5)表示以第5個字元(『5』)結束的字串分成4份所得到的最小乘積。

num(i,j)表示字串中從第i個字元到第j個字元組成的字串的值,如12345中,num(2,4)=234

my code:

[cpp]view plain

copy

#include 

#include 

using

namespace

std;  

intdp[5][20];  

intnum(

const

string &str,

intb,

inte)  

return

res;  

}  int

main()  

dp[i][j]=res;  

}  else

if(i!=1)  

dp[i][j]=min;  

}  else

if(i==1)  

}  cout

0;  

}  

GEANT4學習 段錯誤

1 之前在提取step postpoint時出現了段錯誤,我的推測是step達到world的邊界,無法提取,出現了資訊提取的邏輯錯誤。加了判斷之後就好了。2 還是提取資料出錯,我看有提取step postpoint 的process name的語句,我就寫了乙個提取前點的,發現不行,這個應該是前點就...

(4)段描述符P,G位

在前面的課程學習中我們了解到,段暫存器有96位,其中80位不可見,包括base,limit,attribute。16位可見,即段選擇子selector。對段暫存器進行寫入時,cpu根據段選擇子到gdt表中尋找段描述符,段描述符共8位元組,64位,cpu根據段描述符填充段暫存器。那麼問題就是,如何用6...

Windows核心 (4) 資料段許可權檢查

cpl cpl是當前執行的程式或任務的特權級。它被儲存在cs和ss的第0位和第1位上。通常情況下,cpl代表 所在的段的特權級。當程式轉移到不同特權級的 段時,處理器將改變cpl。只有0和3兩個值,分別表示使用者態和核心態。dpl 如果你想訪問我,你應該具備什麼樣的許可權 rpl 用什麼許可權去訪問...