第一篇,关于permutation algorithm

july  2009年08月21日 星期五 15:20 | 1362次浏览 | 0条评论

permutation algorithm

这里实现了Python和c++的版本的全排列算法。

def perm(lst, lst2=[]):
    if len(lst) == len(lst2):
        print lst2
    else:
        for i in lst:
            if i in lst2:continue
            lst2.append(i)
            perm(lst, lst2)
            lst2.pop()

perm([1,2,3,4,5])

---------------------------------------
#include "stdio.h"

int perm(int * a, int * b, int len, int pos)
{
    if(pos==len){
        for(int i=0;i<len;i++)
            printf("%d,", b[i]);
        printf("\n");
    }
    else
        for(int i=0;i<len;i++){
            int flag = 0;
            for(int j=0;j<pos;j++)
                if(b[j]==a[i])
                    flag = 1;
            if(flag)    continue;
           
            b[pos] = a[i];
            pos ++;
            perm(a, b, len, pos);
            pos --;
        }
   
    return 0;
}

int main()
{
    int a[] = {1,2,3,4,5};
    int b[5];
    perm(a, b, 5, 0);

    return 0;
}

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号