中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 14:58
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [讨论][共同参与]求表格中数的规律[挑战分割法算法极限]
可打印版本  22,453 / 22
第16楼 scriptor 发表于 2007-02-24 11:28
银牌会员 发帖 555 积分 1,187


只是因为排版麻烦点
没有写代码了

请原谅,同时请自己改写输出段代码。

[ Last edited by scriptor on 2007-2-23 at 10:38 PM ]
第17楼 scriptor 发表于 2007-02-24 11:34
银牌会员 发帖 555 积分 1,187

若想输出15*15阶的

只要将所有的(1,1,9)改为(1,1,15),

同时将if %%j equ 9 中的 9 改为15即可

第18楼 scriptor 发表于 2007-02-24 11:37
银牌会员 发帖 555 积分 1,187
这个bat算15*15阶的

运算时间不大于0.10秒(10毫秒)
第19楼 slore 发表于 2007-02-24 14:09
铂金会员 发帖 2,478 积分 5,212
三角形第n行第r个:P<n,r>=C<n,r-1>
表格<i,j>位置数值K<i,j>=P<i+j-2,j>=C<i+j-2,j-1>

VBS:

Dim Hor, Ver, CH, CV, Result
Hor = Inputbox("输入横坐标:", , "13")
Ver = Inputbox("输入纵坐标:", , "15")

CH = Cint(Hor) + Cint(Ver) - 2
If Cint(Hor) > Cint(Ver) Then CV = Cint(Hor) - 1 Else CV = Cint(Ver) - 1
S = CV
Result = 1
For i = CH To CH - CV + 1 Step -1
If S = 0 Then Result = Result * i Else Result = Result * i / S: S = S - 1
Next
Msgbox "结果为:" & Result, , "所求值为:C(" & CH & "," & CV & ")"


Bat:


  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p Hor=所求数的横坐标
  4. set /p Verizon=所求数的纵坐标

  5. set /a CH=%Hor%+%Verizon%-2


  6. if %Hor% GTR %Verizon% (set /a CV=%Hor%-1) else (set /a CV=%Verizon%-1)

  7. echo 所求值为:C^<%CH%,%CV%^>
  8. set /a ForTime=%CH%-%CV%+1
  9. set Final=1
  10. set /a S=%ForTime%
  11. for /l %%k in (%CH%,-1,%ForTime%) do (
  12. set /a Final=!Final!*%%k
  13. set /a Final=!Final!/%S%
  14. if %S% NEQ 0 set /a %S%=%S%-1
  15. )
  16. echo K %Hor%,%Verizon%的值是:%Final%
  17. pause>nul



这个P的代码是我的思路,但是我对P不熟悉还,if的判断大小的句子不成立!!!我也不知道怎么回事,谁把这里改改就好了。

我这个不是输出表格,是直接计算i行j列的数据。

[ Last edited by slore on 2007-2-24 at 01:14 AM ]
第20楼 slore 发表于 2007-02-24 14:29
铂金会员 发帖 2,478 积分 5,212
Originally posted by scriptor at 2007-2-23 22:34:

若想输出15*15阶的

只要将所有的(1,1,9)改为(1,1,15),

同时将if %%j equ 9 中的 9 改为15即可




echo off
setlocal enabledelayedexpansion
cls
:l
set k=15

echo %time%
set a=1
for /l %%i in (1,1,%K%) do (
set /a n=%%i-1
for /l %%j in (1,1,%K%) do (
set /a m=%%j-1
if not defined a set /a a=a+a
)
)
echo %time%
echo.
echo 杨辉三角(%K%*%K%阶)
for /l %%i in (1,1,%K%) do (
for /l %%j in (1,1,%K%) do (
set/p= !a!<nul
if %%j equ %K% echo.&echo.
))

pause>nul
不就好了?刚才用50试了下,6秒,100……等了不知道多少时间(不是很长,但是CPU使用率……)

用脚本算了下....1000,溢出=。=
600都溢出……
500可以了。。。算这些都是瞬间……不过是6.76396999362954E+298这种的格式,毕竟太长了……
第21楼 oilio 发表于 2007-02-24 23:53
高级用户 发帖 303 积分 641
没上过高中啊,不懂函数啊啊,郁闷。。。
第22楼 gne3 发表于 2007-02-25 00:48
高级用户 发帖 252 积分 526
第23楼 qjbm 发表于 2007-02-26 22:50
初级用户 发帖 44 积分 125
19F的VBS是正解.


转换成批处理好象不是

感觉上应该是:

可是调试了半天,不得正果.

------------------------------
闲聊几句:

楼上的gne3兄,帖帖留名啊!PFPF!!!
几天没来,P区快成水区了.

[ Last edited by qjbm on 2007-2-26 at 09:53 AM ]
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023