遍歷數組裡,每幾個元素一組的所有可能 (lua)
local arr={1,2,3,4,5,6,7,8,9,10}
local repcount =#arr
local arr_count = 4 --每幾個元素一組
local rep_cardindex={} --假如4個元素,1234個元素對應arr數組裡的索引
local result_arr={}
for i=1 ,arr_count do
rep_cardindex[i]=1 --[1]=1,[2]=2,[3]=3,[4]=4,第一個陣列就是{1,2,3,4}
end
repeat
local tmp_arr={}
for i=1,arr_count do --將對應元素壓入陣列
table.insert(tmp_arr,rep_cardindex[i])
end
table.insert(result_arr,tmp_arr) --將組合壓入總陣列
if arr_count >0 then if rep_cardindex[arr_count ] == repcount then --最後那個元素索引到了最後一個,要重新調整索引 local out=true for i=arr_count ,2,-1 do out=false if rep_cardindex[i-1] +1 ~= repcount then --最後一個元素的前一個索引是不是到了倒數第二個 rep_cardindex[i-1]=rep_cardindex[i-1]+1 --不是繼續加 for m=i,arr_count do rep_cardindex[m]=rep_cardindex[m-1] +1 --元素的索引移動致前面一個索引的前面 end break end out=true --如果都在倒數的那個幾個上結束 end if out then break end else rep_cardindex[arr_count ]=rep_cardindex[arr_count ]+1 end else break end
until false