1. 程式人生 > >遍歷數組裡,每幾個元素一組的所有可能 (lua)

遍歷數組裡,每幾個元素一組的所有可能 (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