有N種物質,每種物質有一個值,這N種物質的值之和等于100,求的是這N種物質的值,有多少種變化
舉個例子說:N=3,物質分別為A,B,C
第一組A=1,B=1,C=98第二組A=1,B=2,c=97這樣的下去。A,B,C的值之和等于100的話,共有多少種取值方法,在程式里怎么實作呢?因為N是不確定的,所以本專案不能固定是三種物質,不能用三層回圈來實作,要用N種,N不確定種物質出結果。先謝謝各位高手。
uj5u.com熱心網友回復:
采用結構來處理動態2維陣列。。。uj5u.com熱心網友回復:
A=1,B=1,C=98與
A=98,B=1,C=1
算1組還是兩組
uj5u.com熱心網友回復:
處理這種計算,估計會造成資料溢位錯誤。uj5u.com熱心網友回復:
采用遞回//====================================================================
// 函式: w.wf_digui()
//--------------------------------------------------------------------
// 描述:遞回輸出符合條件的組合(不考慮數值重復的情況)
//--------------------------------------------------------------------
// 引數:
// value long al_sum //物質的值之和
// value string as //截止到目前為止,已經組合的數字串, 如:1,2,3
// value long al_num //物質的種數N
//--------------------------------------------------------------------
// 回傳: (None)
//--------------------------------------------------------------------
//====================================================================
long ll[], i,j, k
long ll_deal
string ls
//要取的個數或者要取的和為0,則回傳
if al_num = 0 or al_sum = 0 then return
if al_num = 1 then //最后一個了,則值為al_sum,并且輸出結果
if as = '' then
ls = string(al_num)
else
ls = as + ',' + string(al_sum)
end if
il_count ++
if mle_1.text <> '' then mle_1.text += '~r~n'
mle_1.text += string(il_count) + '~t:' + ls
return
end if
//從1開始回圈直到al_sum - 1 ()
for j = 1 to al_sum - 1
//在回圈中取1個數字,并將該數字添加到“已經組合的數字串”的后面
if as = '' then
ls = string(j)
else
ls = as + ',' + string(j)
end if
wf_digui( al_sum - j , ls, al_num - 1)
next
呼叫方法如下:
//實體變數,表示取得的組合總數
il_count = 0
//引數1:物質的值之和
//引數2:取出來的數字串的前綴
//引數3:物質的種數N
wf_digui(5, '', 3)
uj5u.com熱心網友回復:
這個問題轉換一個角度來看待就容易理解了,這就是把100個球放到N個籃子里,每個籃子最少有1個球,一共有多少種放置方法的問題。分析程序如下:
首先每個籃子里放1個球,保證最低要求,然后還剩余100-N個球,剩余的這些球,每個都有N種放置方法。
答案是:
N^(100-N)
代碼俺就不寫了
uj5u.com熱心網友回復:
這個是演算法的問題了!uj5u.com熱心網友回復:
dingding!!!!!uj5u.com熱心網友回復:
每天一帖,幫頂uj5u.com熱心網友回復:
dingdinguj5u.com熱心網友回復:
三層回圈,回圈里嵌套回圈uj5u.com熱心網友回復:
N確定的情況下,可以用10樓的多層回圈.N不確定的情況下,一般用遞回比較方便.
pb不能一上來直接保存一個直接遞回的函式.(也就是不能寫一個 f() ,跟著直接在f()中又呼叫f())
必須先保存一個f(),里面不要寫代碼,直接RETURN.
保存后再寫真正的代碼(必須保存過一個,才可以呼叫它自己)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/76569.html
標籤:腳本語言
上一篇:關于RFID的價格
下一篇:出錢找人做PB實驗室設備管理系統
