![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 03:30 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]对变量进行组合显示的问题 |
| 可打印版本 1,043 / 7 |
| 第1楼 Hanyeguxing | 发表于 2009-07-04 13:34 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
[已结]对变量进行组合显示的问题 说明:要求讨论组合的可能情况,而不是排列的情况!
例如 set hanye=寒 夜 孤 星,那么变量中这四个字,每个字与其他字组合,不限制组合的字数(即可以单字)有多少种组合呢? 要求输出如下效果: 寒 夜 孤 星 寒夜 寒孤 寒星 夜孤 夜星 孤星 寒夜孤 寒夜星 寒孤星 夜孤星 寒夜孤星 15种组合方法 请按任意键继续... 如何输出或显示出符合条件的情况呢? [ Last edited by Hanyeguxing on 2009-7-5 at 09:07 ] |
|
| 第2楼 moniuming | 发表于 2009-07-04 14:01 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
| 第3楼 Hanyeguxing | 发表于 2009-07-04 17:59 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
折腾一晚上,竟然给我输出:
****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=495, Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** 睡觉去了。。。 |
|
| 第4楼 netbenton | 发表于 2009-07-05 03:24 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
是不是要做成这样呢?
根据 2楼 链接,学习后,再变通得来的。 [ Last edited by netbenton on 2009-7-5 at 01:27 ] |
|
| 第5楼 Hanyeguxing | 发表于 2009-07-05 03:50 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
感谢楼上的朋友。
2楼给出的链接做出的是 排列 的情况,而我需要的是 组合 的情况。 对于组合来说,“寒夜孤星”与“寒夜星孤”是一样的情况,虽然对于排列来说,他们是不同的。所以,排列后,需要再过滤。。。即过滤掉所有使用相同汉字(相同元素)的情况。 顺便庆祝一下,自己终于可以给别人加4分了,哈哈 |
|
| 第6楼 Hanyeguxing | 发表于 2009-07-05 04:08 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
一般的想法,列出所有排列的可能,再过滤得到组合的情况。
按照我在1楼给出的要求,则可能的排列组合数:(n为变量中的字数) 对于组合:Σ(n)=2(n-1)+2(1)+2(2)+2(3)+......+2(n) 说明:本式中,()内的数值为 2 的指数。 即:Σ(n)=2(n)-1 说明:本式中,()内的数值为 2 的指数。 对于排列:Σ(n)=n+ n*(n-1)+ n*(n-1)*(n-2)+ n*(n-1)*(n-2)*(n-3)+ n*(n-1)*(n-2)*(n-3)*(n-4)+ n*(n-1)*(n-2)*(n-3)*(n-4)*(n-5)+ ...... n*(n-1)*(n-2)*(n-3)*(n-4)*(n-5)*......*3+ n*(n-1)*(n-2)*(n-3)*(n-4)*(n-5)*......*3*2+ n*(n-1)*(n-2)*(n-3)*(n-4)*(n-5)*......*3*2*1 当只有四个汉字时,即 n=4 ,则排列数是 64 ,组合数是 15 ,随着 n 的增大,组合数成代数增长,而排列数则在成几何增长。 例如当 n=10 时,组合数是 1023 ,排列数为 9183700 ,这是一个近千万的天文数字。再从 9183700 种排列情况中过滤得到符合条件 1023 种组合的情况,是件很恐怖的事情。。。 于是,我有了这样一个想法,能不能不使用“先排列再过滤”的方法呢? [ Last edited by Hanyeguxing on 2009-7-5 at 08:15 ] |
|
| 第7楼 netbenton | 发表于 2009-07-05 08:42 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
原来两年前已经有前辈把这个问题完美解决了!
http://www.cn-dos.net/forum/viewthread.php?tid=26180### |
|
| 第8楼 Hanyeguxing | 发表于 2009-07-05 09:05 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
惭愧。。。
自己琢磨两天了,也没弄好。。。 看了15楼的代码,汗颜啊,这就是差距,也是努力的方向。。。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |