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秒。。。