注册 登录
编程论坛 C++教室

【数据结构】全排列的几个函数和语法问题

llwwzz 发布于 2014-04-01 18:28, 355 次点击
《计算机算法设计与分析》例2-4原代码
template<class Type>                                c++的模版没学好,求帮忙解释一下
void Perm(Type list[],int k,int m)                    书上只是说需要排序的元素,但是我感觉为什么书上的例子这些元素都已经排好序了啊?是list[]  
{                                                  的功能么? 对了 list[]是啥东东?是一个链表?                     
    if (k==m)
    {
        for(int i=0;i<=m;i++) cout<<list[i];
        cout<<endl;
    }
    else
        for(int i=k;i<=m;i++)
        [
            swap(list[k],list[i]);
            Perm(list,k+1,m);
            swap(list[k],list[i]);
         }
}
template<class Type>
inline void swap(Type&a,Type&b)            这里看懂了,应该是将ab的地址交换对不?
{   
    Type temp=a;a=b;b=temp;
}
1 回复
#2
蚕头燕尾2014-04-02 17:51
template<class Type>                           
void Perm(Type list[],int k,int m)//这里的list就是待排列的数组            
{                                                                     
    if (k==m)
    {
        for(int i=0;i<=m;i++)
            cout<<list[i];
        cout<<endl;
    }
    else
        for(int i=k;i<=m;i++)
        {
            swap(list[k],list[i]);
            Perm(list,k+1,m);
            swap(list[k],list[i]);
        }
}

template<class Type>
inline void swap(Type&a,Type&b)//交换a,b的值,这里是“引用”,不是交换地址
{   
    Type temp=a;a=b;b=temp;
}



另外建议楼主看看这里:http://

这是一个递归调用的过程。

1