递归实现全排列

//输入待排数组,cur=0,end为数组长度
void perm(int a[], int cur, int end)
{
    int i = cur;

    if (cur == end)
    {
        for (int j = 0; j < end; j++)
        {
            cout << a[j] << " ";
        }
        cout << endl;
    }
    while(i < end)
    {
        swap(a[i],a[cur]);//把a[i]拿出来放在前面,排列剩下的
        perm(a, cur + 1, end);
        swap(a[i], a[cur]);//排列好这次后记得把数组还原接着取出下一个放在前面
        i++;
    }
}
posted @ 2011-09-20 10:42  lidan  阅读(167)  评论(0编辑  收藏  举报