|
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: |
- @echo off
- setlocal enabledelayedexpansion
- set /p Hor=所求数的横坐标
- set /p Verizon=所求数的纵坐标
- set /a CH=%Hor%+%Verizon%-2
- if %Hor% GTR %Verizon% (set /a CV=%Hor%-1) else (set /a CV=%Verizon%-1)
- echo 所求值为:C^<%CH%,%CV%^>
- set /a ForTime=%CH%-%CV%+1
- set Final=1
- set /a S=%ForTime%
- for /l %%k in (%CH%,-1,%ForTime%) do (
- set /a Final=!Final!*%%k
- set /a Final=!Final!/%S%
- if %S% NEQ 0 set /a %S%=%S%-1
- )
- echo K %Hor%,%Verizon%的值是:%Final%
- 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
状态 离线
|
|
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 |
|
|