标题: 出个小题,消遣一下~
[打印本页]
作者: 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秒。。。