Board logo

标题: [数值计算] BAT批处理如何把 1 3 4 9 这4组数的3位数不同组合显示出来? [打印本页]

作者: lanwen    时间: 2014-4-26 13:42     标题: BAT批处理如何把 1 3 4 9 这4组数的3位数不同组合显示出来?

bat 如何把 1 3 4 9 这4组数的3位数不同组合显示出来
我知道一共有64种组合要求就是
输入4组不同的数  显示出这4组数的 所有3位数组合
作者: Batcher    时间: 2014-4-26 13:51

P(4,3) = 24
不是64吧?
作者: digger    时间: 2014-4-27 00:11

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p b=请输入4位数(中间用空格分开):
  3. for %%i in (!b!) do (
  4.   for %%j in (!b!) do (
  5.   set c=!b:%%j=!
  6.   for %%k in (!c!) do set d=%%j%%k&if  "!d:%%i=!"=="!d!" echo %%i!d!
  7. )
  8. )
  9. pause
复制代码

作者: CrLf    时间: 2014-4-27 00:30

楼主说的是不是重复排列:
  1. @echo off
  2. set b=1 3 6 9
  3. for %%i in (%b%) do (
  4.   for %%j in (%b%) do (
  5.     for %%k in (%b%) do echo %%i %%j %%k
  6. )
  7. )
  8. pause
复制代码

作者: terse    时间: 2014-4-27 02:09

貌似3楼正解八
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=1 2 3 4
  3. for %%i in (!var!) do (
  4.     set a=!var:%%i=!
  5.     for %%j in (!a!) do (
  6.         set a=!var:%%j=!
  7.         for %%k in (!a:%%i^=!) do echo %%i %%j %%k
  8.     )
  9. )
  10. pause
复制代码

作者: zhanglei1371    时间: 2014-4-28 16:08

再来个更简单的:
set "v=1 2 3 4"
for %%i in (%v%) do (
        for %%j in (%v%) do (
                for %%k in (%v%) do (
                        if %%i neq %%j (if %%i neq %%k (if %%j neq %%k echo %%i%%j%%k))
                )
        )
)




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2