藏书阁 史将 特技
背景 三国演义 PC版
首页 -> 精彩文章 -> 文章
RE:疑难求解
作者拉格浪日
标签技术
阅读次数:22
我认为可以这样理解:
perm函数来对字符串进行递归.
当执行 
char s[6]="01234";
Perm(s,0,4);时
// 递归地产生这些排列方式
    for (i=k; i <= m; i++) {
      Swap (&list[k], &list[i]);
      Perm (list, k+1, m);
      Swap (&list [k], &list [i]);
    }
循环里的k=0,m=4,此循环里面两个Swap函数其实就是把第一个字符分别和后面的数字进行交换,在保持第一位不变的前提下,可以把问题转化为Perm (list, k+1, m); 对该例子也就是只改变第一到四位,这样在保持前n位不变的前提下利用递归的栈保存前面的数据,通过重复交换,在满足 if (k == m) 就可以有一个输出了.通过递归可以输出所有结果.
我不知道这样说是否清楚.
这个题在有关算法的书上是可以查到的,大概是减治或者递归那一章,你可以查一下好好看看,其实如果有了一些算法的思想这个还是可以理解的.


浙ICP备06020153号-1