您的位置:首页 > 其它

全排列算法的思想

2016-03-01 22:22 267 查看
全排列算法

题目要求:

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。

  总体的思想是固定前面的某些元素位,比如1,2,3全排列时,先固定1,排后面的2,3,就有(1,2,3),(1,3,2)两种排列。让算法理解简化的一步是。将数组中的所有元素分别与第一个元素进行交换,这样就总是排列后面的n-1个元素。

 

//====递归算法==========================
void Permu(int list[ ] , int n , int index)
{
if(index == n-1)
printf(list);
else
for(int i=index;i<n;i++)
{
swap(list[i] , list[index]);
Permu(list , n , index+1 );
swap(list[i] , list[index] );
}
}
int main( )
{
int list[ ] = {1,2,3};
Permu(list, 3, 0);
return 0;
}
//----------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: