免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7416 | 回复: 9
打印 上一主题 下一主题

[算法] 请教: 排列组合的穷举算法? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-02 12:04 |只看该作者 |倒序浏览
请教各位大虾, 如何C/C++实现排列组合的算法.  在n组数组中,每组数组任选一个成员组成一种排列, 每组数组有M个成员. 要求不重复的列出所有的成员组合排列.  这个算法应该如何?  谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-01-02 15:41 |只看该作者

请教: 排列组合的穷举算法?

论坛徽章:
0
3 [报告]
发表于 2004-01-02 15:46 |只看该作者

请教: 排列组合的穷举算法?

悟空,你又调皮了……

论坛徽章:
0
4 [报告]
发表于 2004-01-02 16:21 |只看该作者

请教: 排列组合的穷举算法?

[quote]原帖由 "abyss"]悟空,你又调皮了……[/quote 发表:



??????

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-01-02 16:28 |只看该作者

请教: 排列组合的穷举算法?

我记得一本用c++写的数据结构与算法书里第一章,
实现的有一个算法,和你的很相似,可惜书名我
记不清了。

论坛徽章:
0
6 [报告]
发表于 2004-01-05 10:02 |只看该作者

请教: 排列组合的穷举算法?

原帖由 "lenovo" 发表:
我记得一本用c++写的数据结构与算法书里第一章,
实现的有一个算法,和你的很相似,可惜书名我
记不清了。



    
多谢lenovo 兄. 偶自己也想到了一种算法,不过好象实现起来有点难.还没写出来
........

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-01-05 10:32 |只看该作者

请教: 排列组合的穷举算法?

原帖由 "geniushu" 发表:



    
多谢lenovo 兄. 偶自己也想到了一种算法,不过好象实现起来有点难.还没写出来
........

它的那个不超过10行,用的是递归算法。
时间久了,我也忘了怎么写了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-01-05 12:31 |只看该作者

请教: 排列组合的穷举算法?

我写过,不过忘记了。用递归最好了。等忙完考试在找找。

论坛徽章:
0
9 [报告]
发表于 2004-01-05 13:32 |只看该作者

请教: 排列组合的穷举算法?

给你一个,我写的,将就用用? 希望对你有帮助。

代码不长,在附件中。我不懂如何粘贴代码,谁懂的教教我。

靠,原来添加文件的技术我也不懂。只好硬粘了。

  1. #include <stdio.h>;
  2. #define N 3
  3. #define M 4

  4. void f (char (*p)[M], int n, char *q);

  5. char str[M+1];

  6. int
  7. main ()
  8. {
  9.         char a[N][M] = {"abcd", "efgh", "ijkl"};
  10.         int i,j;
  11.        
  12.         /*
  13.         for (i=0; i<3; i++) {
  14.                 for (j=0; j<4; j++)
  15.                         printf ("%c ", a[i][j]);
  16.                 putchar ('\n');
  17.         }
  18.         */

  19.         f (a, N, str);
  20.         exit (0);
  21. }

  22. void
  23. f (char (*p)[M], int n, char *q)
  24. {
  25.         int i;

  26.         if (n==1) {
  27.                 for (i=0; i<M; i++) {
  28.                         *q = p[0][i];
  29.                         puts (str);
  30.                 }
  31.         } else {
  32.                 for (i=0; i<M; i++) {
  33.                         *q = p[0][i];
  34.                         f (p+1, n-1, q+1);
  35.                 }
  36.         }

  37.         return ;
  38. }
复制代码


原来如此。。。 :em11:

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-01-05 14:10 |只看该作者

请教: 排列组合的穷举算法?

原帖由 "win_hate" 发表:

原来如此。。。 :em11:

哈哈!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP