1. 程式人生 > >排列組合演算法

排列組合演算法

1. 遞迴演算法

void Perm(char list[], int k, int m) 
{ //生成list [k:m ]的所有排列方式 
    int i; 
    if (k == m) {//輸出一個排列方式 
        for (i = 0; i <= m; i++) 
            putchar(list[i]); 
        putchar('\n'); 
    } 
    else // list[k:m ]有多個排列方式 
        // 遞迴地產生這些排列方式 
        for (i=k; i <= m; i++) { 
            Swap (list[k], list[i]); 
            Perm (list, k+1, m); 
            Swap (list [k], list [i]); 
        } 
} 
ref: http://tieba.baidu.com/f?kz=12248706