首页 > 编程语言 > 详细

算法思考-1-求n个不同字符的全排列-递归

时间:2019-11-24 22:25:34      阅读:161      评论:0      收藏:0      [点我收藏+]
 1 #include <stdio.h>
 2 
 3 void perm(char str[],int k,int n)//递归求str[0]~str[k]的全排列
 4 {
 5     int i,j;
 6     char tmp;
 7     if(k==0)
 8     {
 9         for(j=0;j<n;j++)
10             printf("%c\t", str[j]);
11         printf("\n");
12     }
13     else
14     {
15         for(i=0;i<=k;i++)
16         {
17             tmp=str[k];//交换str[k]和str[i]
18             str[k]=str[i];
19             str[i]=tmp;
20             perm(str,k-1,n);//对于str[k]位置,可以取str[0]~str[k]任何值,递归至k==0打印输出
21             tmp=str[k];//交换回来str[k]和str[i]
22             str[k]=str[i];
23             str[i]=tmp;            
24         }
25     }
26 }
27 int main(int argc, char const *argv[])
28 {
29     char a[]="123";
30     perm(a,2,3);
31 
32     return 0;
33 }

运行结果:

技术分享图片

 

算法思考-1-求n个不同字符的全排列-递归

原文:https://www.cnblogs.com/gilgamesh-hjb/p/11924288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!