中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论][共同参与]求表格中数的规律[挑战分割法算法极限]
« [1] [2] »
作者:
标题: [讨论][共同参与]求表格中数的规律[挑战分割法算法极限] 上一主题 | 下一主题
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 16 楼』:  


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


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

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

[ Last edited by scriptor on 2007-2-23 at 10:38 PM ]

2007-2-24 11:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 17 楼』:  


若想输出15*15阶的

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

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



2007-2-24 11:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 18 楼』:  

这个bat算15*15阶的

运算时间不大于0.10秒(10毫秒)

2007-2-24 11:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 19 楼』:  

三角形第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:

  Quote:
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:

  Quote:

  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 ]

2007-2-24 14:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 20 楼』:  



  Quote:
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][1]=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[%%i][%%j] set /a a[%%i][%%j]=a[%%i][!m!]+a[!n!][%%j]
)
)
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[%%i][%%j]!<nul
     if %%j equ %K% echo.&echo.
))

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

用脚本算了下....1000,溢出=。=
600都溢出……
500可以了。。。算这些都是瞬间……不过是6.76396999362954E+298这种的格式,毕竟太长了……

2007-2-24 14:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
oilio
高级用户

前进者


积分 641
发帖 303
注册 2007-1-10
状态 离线
『第 21 楼』:  

没上过高中啊,不懂函数啊啊,郁闷。。。



我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
2007-2-24 23:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gne3
高级用户

DOS学徒


积分 526
发帖 252
注册 2007-2-12
状态 离线
『第 22 楼』:  



2007-2-25 00:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qjbm
初级用户





积分 125
发帖 44
注册 2007-1-24
状态 离线
『第 23 楼』:  

19F的VBS是正解.
If S = 0 Then Result = Result * i Else Result = Result * i / S: S = S - 1
转换成批处理好象不是
(
set /a Final=!Final!*%%k
set /a Final=!Final!/%S%
if %S% NEQ 0 set /a S=%S%-1
)
感觉上应该是:
(
IF %S% EQU 0 set /a Final=!Final!*%%k ELSE (
set /a Final=!Final!*%%k/%S%
set /a S-=1
)
)
可是调试了半天,不得正果.

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

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

[ Last edited by qjbm on 2007-2-26 at 09:53 AM ]

2007-2-26 22:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: