|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
16 楼』:
借了楼上的思路
@echo off&setlocal enabledelayedexpansion
for %%a in (1 2) do (
set/p $%%a=输入第 %%a 组:
set n=0
for %%b in (!$%%a!) do (set /a n+=1&set $%%a-%%b=1&set $%%a-%%b-!n!=1)
)
set/a n=0,$a=0,$b=0
for %%a in (%$1%) do (
set /a n+=1
if defined $2-%%a-!n! set /a $a+=1&set $2-%%a=
if defined $2-%%a set /a $b+=1
)
echo %$a%A%$b%B
pause 要考虑的问题还真多,下面的可以了:
@echo off
:lp
endlocal&setlocal enabledelayedexpansion
for %%a in (1 2) do (
set/p $%%a=输入第 %%a 组:
set n=0
for %%b in (!$%%a!) do (set /a n+=1&set/a $%%a.%%b +=1&set $%%a.%%b.!n!=1)
)
set/a n=0,$a=0,$b=0
for %%a in (%$1%) do (
set /a n+=1
if defined $2.%%a.!n! (set /a $a+=1,$2.%%a -=1) else set st=!st! %%a
)
for %%a in (%st%) do if !$2.%%a! gtr 0 set /a $b+=1,$2.%%a -=1
echo %$a%A%$b%B&echo;&echo;&goto :lp [ Last edited by netbenton on 2010-12-1 at 01:28 ]
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2010-12-1 20:28 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
17 楼』:
在方法1和方法2中,都可以把
for /l %%a in (1,1,%Ye1%) do if "!#%%a!"=="!@%%a!" set/a Xing1+=1&set Gu1=!Gu1:%%a =! 改成
for %%a in (%Gu1%) do if "!#%%a!"=="!@%%a!" set/a Xing1+=1&set Gu1=!Gu1:%%a =! [ Last edited by Hanyeguxing on 2010-12-2 at 09:52 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2010-12-1 22:51 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
18 楼』:
方法1和方法2中,除了定义变量组外,还定义了一个序号变量(Gu1、Gu2),获取A、B的值,都可以通过循环这个序号变量完成,如果不去定义这个序号变量,还可以通过删除变量组中用过的变量来完成:
@echo off&setlocal enabledelayedexpansion
for %%a in (1 2) do set Xing%%a=0&set/p Han%%a=输入第 %%a 行字符:
for %%a in (%Han1%) do set/a Ye1+=1&set #!Ye1!=%%a
for %%a in (%Han2%) do set/a Ye2+=1&set @!Ye2!=%%a
for /l %%a in (1,1,%Ye1%) do if "!#%%a!"=="!@%%a!" set/a Xing1+=1&set #%%a=&set @%%a=
for %%a in (%Han1%) do (
set/a Gu1+=1,Gu2=0
for %%b in (%Han2%) do (
set/a Gu2+=1
if "%%a"=="%%b" if defined #!Gu1! if defined @!Gu2! set/a Xing2+=1&set #!Gu1!=&set @!Gu2!=
))
echo %Xing1%A%Xing2%B&pause&exit
@echo off&setlocal enabledelayedexpansion
for %%a in (1 2) do set Xing%%a=0&set/p Han%%a=输入第 %%a 行字符:
for %%a in (%Han1%) do set/a Ye1+=1&set #!Ye1!=%%a
for %%a in (%Han2%) do set/a Ye2+=1&set @!Ye2!=%%a
for /l %%a in (1,1,%Ye1%) do if "!#%%a!"=="!@%%a!" set/a Xing1+=1&set #%%a=&set @%%a=
call:Han %Han1%
echo %Xing1%A%Xing2%B&pause&exit
:Han
set/a Gu1+=1,Gu2=0
for %%a in (%Han2%) do (
set/a Gu2+=1
if "%%a"=="%1" if defined #!Gu1! if defined @!Gu2! set/a Xing2+=1&set #!Gu1!=&set @!Gu2!=
)
shift
if not "%1"=="" goto:Han [ Last edited by Hanyeguxing on 2010-12-2 at 10:27 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2010-12-2 04:07 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
19 楼』:
Hanyeguxing 的2,3,4种方法,对下例组合,测试结果不对:
1 1 2 2 1 1 1
2 1 2 1 1 1 2
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2010-12-2 04:36 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
20 楼』:
Quote: | Originally posted by netbenton at 2010-12-2 04:36:
Hanyeguxing 的2,3,4种方法,对下例组合,测试结果不对:
1 1 2 2 1 1 1
2 1 2 1 1 1 2 |
|
实际测试方法1和2没问题,3和4错误
究其原因是方法3和4在设计思路上就是错误的,因为是否优先获得A的全部值,结果很可能不同。
汗一个先,已经修改了。。。
[ Last edited by Hanyeguxing on 2010-12-2 at 10:16 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2010-12-2 09:18 |
|