計算乙個N個選項中和為X的所有組合數

2021-07-15 21:15:31 字數 1519 閱讀 5615



假如5塊錢可以買乙個女朋友,你會買什麼樣的?下面是每項的**

有錢-4元, 長得好看-3元, 會做飯-3元, 忠誠-3元, **-2元, 溫柔-2元, 活潑可愛-2元, 大長腿-1元, 聰明-1元, 胸大-1元

--計算從1到maxnumber的自然數中取selnum個數的所有組合

function calcnaturalnumbercomb(maxnumber, selnum, tabreturn)

local tabcomb = {}

comb_natural_number_recursive_func = function(m,k,tab)

for i=m,k,-1 do

tabcomb[k+1] = i

if k > 1 then

comb_natural_number_recursive_func(i-1,k-1,tab)

else

local tabout = {}

local nstart = tonumber(tabcomb[1])

for n=nstart,1,-1 do

table.insert(tabout,tabcomb[n+1])

endtable.insert(tab,tabout)

endend

endtabcomb = {}

tabcomb[1] = selnum

comb_natural_number_recursive_func(maxnumber, selnum, tabreturn)

endtab_x =

tab_name = {}

tab_val = {}

for k,v in pairs(tab_x) do table.insert(tab_name,k) table.insert(tab_val,v) end

local tabcomball = {}

for i=1,table.count(tab_x) do

local tabcomb = {}

calcnaturalnumbercomb(table.count(tab_x), i, tabcomb)

table.insert(tabcomball, tabcomb)

endlocal id = 1

for i=1,#tabcomball do

for k=1,#tabcomball[i] do

local c = 0

local s = ""

for m=1,#tabcomball[i][k] do

c = c + tab_val[tabcomball[i][k][m]]

s = s .. tab_name[tabcomball[i][k][m]].."["..tab_val[tabcomball[i][k][m]].."]"

endif c == 5 then

print(string.format("%02d.%s", id, s))

id = id + 1

endend

end

輸入乙個正數 n,輸出所有和為 n 連續正數序列。

1 輸入乙個正數 n,輸出所有和為 n 連續正數序列 例如輸入 15,由於 1 2 3 4 5 4 5 6 7 8 15,所以輸出 3 個連續序列 1 5 4 6 和 7 8。分析 我們用兩個數small和big分別表示序列的最小值和最大值。首先把small初始化為 1,big初始化為 2。如果從s...

輸入乙個整數N 輸出所有和為N的連續正數序列

輸入乙個整數n 輸出所有和為n的連續正數序列 當輸入乙個整數時,為了獲取它的連續整數序列時,一般我們是從比它小的數開始累加,就比如說輸入15,從1開始加到2,3,4,5這時相加數就為15,我們就可以不用加後面的,開始從2開始,以此類推的話,於是我們可以發現當我們從15的中間值左右8開始加9時,是直接...

輸入乙個正數n,輸出所有和為n連續正整數序列

public class lzwcode 題目 輸入乙個正數n,輸出所有和為n連續正整數序列。例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所以輸出3個連續序列1 5 4 6和7 8。思路 因為整數序列是有序的,可以設立兩個游標begin和end,通過判區間 begin,end 的...