Board logo

标题: 出个小题,消遣一下~ [打印本页]

作者: pusofalse     时间: 2008-6-7 23:09    标题: 出个小题,消遣一下~
有点无聊。。 一堆球,红球,黑球,白球,各是7个,8个,5个,要求从中随意取出13个,这13个当中,必须最少有3个红球。输出所有可能的组合方式~

作者: slore     时间: 2008-6-7 23:24
3 5 5 3 6 4 3 7 3 3 8 2 4 4 5 4 5 4 4 6 3 4 7 2 4 8 1 5 3 5 5 4 4 5 5 3 5 6 2 5 7 1 6 2 5 6 3 4 6 4 3 6 5 2 6 6 1 7 1 5 7 2 4 7 3 3 7 4 2 7 5 1

作者: 26933062     时间: 2008-6-8 00:27
楼上的好像不全 :
@echo off&setlocal enabledelayedexpansion
for /l %%a in (3 1 7) do (
   for /l %%b in (1 1 8) do (
      for /l %%c in (1 1 5) do (
         set /a n=13-%%a,m=%%b+%%c,k=%%a+%%b,i=%%a+%%c
         if !m! equ !n! (set .%%a %%b %%c=a) else (
            if !k! equ 13 (set .%%a %%b 0=a) else if !i! equ 13 set .%%a 0 %%c=a
))))
for /f "delims=.=" %%a in ('set .') do echo %%a
pause

作者: pusofalse     时间: 2008-6-8 00:32
2楼 貌似没有考虑黑球是0个,或者白球是0个的情况~ 题中已经说明了是任意。。。 还有附加条件,红球必须最少3个

作者: pusofalse     时间: 2008-6-8 00:35    标题: 抛砖引玉,希望能求得更多的解
@echo off&setlocal enabledelayedexpansion echo %time% for /l %%r in (3 1 7) do ( for /l %%b in (0 1 8) do ( for /l %%w in (0 1 5) do ( set/a res=%%r+%%b+%%w if !res! equ 13 echo %%r %%b %%w ) ) ) echo %time% pause

作者: 26933062     时间: 2008-6-8 00:38
5楼的简洁多了, 靠居然忘了 把for 从0开始,白搞了那么多if判断。

作者: ness     时间: 2008-6-8 00:41
@echo off&setlocal enabledelayedexpansion
for /l %%a in (3 1 7) do (
   for /l %%b in (0 1 8) do (
      for /l %%c in (0 1 5) do (
      set/a n=%%a+%%b+%%c
      if !n! equ 13 echo %%a %%b %%c
)))
pause

作者: ness     时间: 2008-6-8 00:41
怎么一会工夫有人发了啊

作者: pusofalse     时间: 2008-6-8 00:43
7楼的朋友,真是同出一辙啊!~ 想到一块去了~^_^

作者: slore     时间: 2008-6-8 01:27
@echo off&setlocal enabledelayedexpansion echo %time% for /l %%r in (3 1 7) do ( for /l %%w in (0 1 5) do ( set/a res=13-%%r-%%w if !res! LSS 9 echo %%r !res! %%w ) ) echo %time% pause

作者: pusofalse     时间: 2008-6-8 01:32
真的是太棒了!运行时间,绝对的0.00秒。。。