組合算法

從m個數中找出所有n個數的組合。下面這個算法很有技巧性。

  本程序的思路是開一個數組,其下標表示1到m個數,數組元素的值爲1表示其下標 
  代表的數被選中,爲0則沒選中。   
  首先初始化,將數組前n個元素置1,表示第一個組合爲前n個數。   
  然後從左到右掃描數組元素值的“10”組合,找到第一個“10”組合後將其變爲 
  “01”組合,同時將其左邊的所有“1”全部移動到數組的最左端。   
  當第一個“1”移動到數組的m-n的位置,即n個“1”全部移動到最右端時,就得 
  到了最後一個組合。   
  例如求5中選3的組合:   
  1   1   1   0   0   //1,2,3   
  1   1   0   1   0   //1,2,4   
  1   0   1   1   0   //1,3,4   
  0   1   1   1   0   //2,3,4   
  1   1   0   0   1   //1,2,5   
  1   0   1   0   1   //1,3,5   
  0   1   1   0   1   //2,3,5   
  1   0   0   1   1   //1,4,5   
  0   1   0   1   1   //2,4,5   
  0   0   1   1   1   //3,4,5  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章