[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
有重复字符很简单啊。
  1. set var=a b c a b
  2. for %%a in (%var%) do set/a nn+=1&set .!nn!=%%a
  3. for /l %%a in (1 1 %nn%) do set "str=!str!%%a "
  4. for %%i in (!str!) do (
  5. ....
  6. ....
  7. echo !.%%i! !.%%j! !.%%k! !.%%l! !.%%m!
复制代码
心绪平和,眼藏静谧。

TOP

原帖由 huahua0919 于 2008-9-1 09:40 发表
楼主的a b a 组合其中有相同的,怎么算组合(排列组合不允许有相同的组合)

可能是我的表述有问题
我的意思是:输入3个字符应该是6种组合  输入4个字符应该是24种组合  输入5个字符应该是120种组合
不管输入有无重复字符 也就是如果输入a a a a a 就要输出120行 a a a a a 实际上最后一行的第一位并不一定是第一排的第一位的a
这样的表述是否清楚?
下面是个效率不错的组合输出:但输入的组合不能有重复字符 而且是固定位数
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=a b c d c d e f
  3. for %%i in (!var!) do (
  4.     set var1=!var:%%i=!
  5.     for %%j in (!var1!) do (
  6.     set var2=!var1:%%j=!
  7.     for %%k in (!var2!) do (
  8.     set var3=!var2:%%k=!
  9.     for %%l in (!var3!) do (
  10.     set var4=!var3:%%l=!
  11.     for %%m in (!var4!) do (
  12.     set var5=!var4:%%m=!
  13.     for %%n in (!var5!) do (
  14.     set var6=!var5:%%n=!
  15.     set/a flag+=1
  16.     echo %%i %%j %%k %%l %%m %%n !var6: =!
  17.     ))))))
  18.     echo 共有%flag%个组合
  19. pause
复制代码

[ 本帖最后由 terse 于 2008-9-2 16:12 编辑 ]

TOP

原帖由 terse 于 2008-9-1 01:36 发表
如输入a b a
274

输入 a b c d e a b
275
写了一个效率很不高到7位的话 就要近50秒
难度是要能处理相同字符组合
贴出就加分
2天后来加分


去掉重复的?对楼主来说会难么?

再其中的输出加上一句.

if not 输出==true (
      set 输出=true
      echo 输出
)

当然这里我更情愿用临时文件的方法来解决。

type 临时文件 | findstr /r "^输出$"
if errorlevel 1 ***

至于程序算法...天啊。.代码太长了。

TOP

回复 3楼 的帖子

楼主的题目要求是"列出组合",而不是"列出排列组合",因此应该允许重复的字符出现吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

楼主的a b a 组合其中有相同的,怎么算组合(排列组合不允许有相同的组合)

[ 本帖最后由 huahua0919 于 2008-9-1 09:55 编辑 ]

TOP

这题的难度好像不在于相同的字符,对我来说,如何排列才是最难的。头疼,排列组合。。。
心绪平和,眼藏静谧。

TOP

返回列表