中科因仑“3+1”工程特种兵精英论坛

标题: 试题之全排序 [打印本页]

作者: 伊海    时间: 2014-8-5 15:29
标题: 试题之全排序
本帖最后由 伊海 于 2014-8-5 15:36 编辑

写一个程序,对任意一串字符串进行全排序。如123的全排序为:123,132,213,231,312,321.
  1. #include "stdafx.h"
  2. //读者在这里思考两个问题:
  3. //1.这个函数的作用是什么?
  4. //2.inline是做什么用的?
  5. inline void Swap(char *a, char *b)
  6. {
  7.     /* 交换a和b */
  8.     char temp = *a;
  9.     *a = *b;
  10.     *b = temp;
  11. }
  12. //读者想想如何列举出所有的排列顺序
  13. void Perm(char list[], int k, int m)
  14. {
  15.     /* 生成list [k:的所有排列方式 */
  16.     int i = 0;
  17.     /* 输出一个排列方式 */
  18.     if (k == m)
  19.     {
  20.        for (i = 0; i <= m; i++)
  21.        {
  22.            putchar(list);
  23.        }
  24.        putchar('\n');
  25.     }
  26.     else
  27.     {
  28.        /* list[k:有多个排列方式 */
  29.        /* 递归地产生这些排列方式 */
  30.        for (i = k; i <= m; i++)
  31.        {
  32.            Swap (&list[k], &list);
  33.            Perm (list, k+1, m);
  34.            Swap (&list [k], &list );
  35.        }
  36.     }
  37. }
  38. //测试
  39. int main(int argc, char* argv[])
  40. {
  41.    
  42.     char s[] = "1234";
  43.     Perm(s, 0, 3);
  44.     return 0;
  45. }
复制代码

编译结果:
1234
1243
1324
1342
1432
1423
2134
2143
2314
2341
2431
2413
3214
3241
3124
3142
3412
3421
4231
4213
4321
4312
4132
4123
请按任意键继续. . .



作者: 杨玉玺    时间: 2014-8-5 15:34
这是神马东西完全不懂哎
作者: lxe    时间: 2014-8-5 15:37
高大上。。{:soso_e179:}




欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4