[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

批处理算24点

http://tieba.baidu.com/f?kz=522864657
10楼
  
作者:liuzhaonan11   

@echo off
setlocal enableextensions enabledelayedexpansion
title 作者:liuzhaonan11
echo 批处理算24点&echo.
:loop
set /p "n=输入四个数用空格分开: "
set /a "lzn=0"
for %%i in (!n!) do (
   set /a "lzn+=1"
   set /a "lz!lzn!z=%%i,lz!lzn!m=1,lz!lzn!s=%%i"
)
call:liuzhaonan11 lz
if not errorlevel 1 echo 结果: 没有答案
goto loop
原理说明:使用有理数进行计算,选择算式中最先结合的两数和它们之间的运算,并递归.
:liuzhaonan11
setlocal
set "f1=+"
set "f2=-"
set "f3=*"
set "f4=/"

for /l %%i in (1,1,!%1n!) do for /l %%j in (1,1,!%1n!) do if %%i neq %%j (
  for /l %%k in (1,1,4) do (
   setlocal
   if %%k leq 2 set /a "z=%1%%jz*%1%%im!f%%k!%1%%jm*%1%%iz,m=%1%%jm*%1%%im"
   if %%k equ 3 set /a "z=%1%%jz*%1%%iz,m=%1%%jm*%1%%im"
   if %%k equ 4 set /a "z=%1%%jz*%1%%im,m=%1%%jm*%1%%iz"
   if !%1n! equ 2 (
     set /a "t=!z!-24*!m!"
     if !t! equ 0 if !m! neq 0 echo 结果: !%1%%js! !f%%k! !%1%%is! = 24&exit /b 1
   ) else (
           set "s=(!%1%%js! !f%%k! !%1%%is!)"&set /a "n=0"
           for /l %%l in (1,1,!%1n!) do if %%l neq %%i if %%l neq %%j (
            set /a "n+=1"&set "%1!n!z=!%1%%lz!"&set "%1!n!m=!%1%%lm!"&set "%1!n!s=!%1%%ls!"
           )

           set /a "n+=1"&set "%1!n!z=!z!"&set "%1!n!m=!m!"&set "%1!n!s=!s!"
           set "%1n=!n!"&call%0 %1
           if errorlevel 1 exit /b 1
   )
   endlocal
  )
)
exit /b 0  

[ 本帖最后由 523066680 于 2009-5-30 17:27 编辑 ]

不会是大家都会了吧……
Press Any Key To Continue...

TOP

回复 2楼 的帖子

如果你不会,可以随便问^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

答案似乎不是太好。因为有的有好多算法,不过还是挺感谢的哦

TOP

顶一下, 谢谢了!不错!

TOP

10楼
  
作者:liuzhaonan11   



[ 本帖最后由 523066680 于 2009-5-30 17:27 编辑 ]
523066680 发表于 2009-5-30 17:26



    有个疑问:set /a "lz!lzn!z=%%i,lz!lzn!m=1,lz!lzn!s=%%i",这行代码的作用,我在一个新文件中粘贴了所有代码,将这行代码删除运行,好像没出现什么问题,所以不知道这行代码有什么作用。

TOP

回复 6# GNGW

    太久没看批处理了,现在看批处理非常的难受。
不打算去梳理整段代码,也不做测试
就大概看:  set /a "lz!lzn!z=%%i,lz!lzn!m=1,lz!lzn!s=%%i" 创建了 lz{编号}z, lz{编号}m, lz{编号}s 几组变量,这句删除后还能正常处理的话,

有可能是后面的代码中
  1. set /a "n+=1"&set "%1!n!z=!z!"&set "%1!n!m=!m!"&set "%1!n!s=!s!"
复制代码
以及类似的几句代码有做了对应的处理。

TOP

回复 7# 523066680


    您好您好。真没想到原作者会回复我,因为是好久的帖子,也好像看了一眼您最后上线时间好像是08年还是23年,

TOP

返回列表