|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『楼 主』:
[共同参与][挑战思路] 求一列数所有不同组合的和
给出一个纯数值文本,一行一条记录,无空行,求这一列数值所有不同组合的和(行号相同而数值出现顺序不同的组合视为同一组合),要求输出格式为 n1+n2+n3=sum。
比如文本内容为:
1
2
3
4
5 要求输出的格式为(次序可以打乱):
1+2=3
1+3=4
1+4=5
1+5=6
2+3=5
2+4=6
2+5=7
3+4=7
3+5=8
4+5=9
1+2+3=6
1+2+4=7
1+2+5=8
1+3+4=8
1+3+5=9
1+4+5=10
2+3+4=9
2+3+5=11
3+4+5=12
1+2+3+4=10
1+2+3+5=11
1+3+4+5=13
2+3+4+5=14
1+2+3+4+5=15 1+2+3=6 和 2+1+3=6 视作同一组合。
[ Last edited by namejm on 2006-12-29 at 09:55 PM ]
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-12-30 10:40 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
2 楼』:
不明白是什么意思?举个简单的例子?
|
|
2006-12-30 10:47 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
3 楼』:
namejm兄的意思是一个文本中每一行都有一个数字(大概二十个数), 要计算出这些数字所有可能的和.
test.txt
1
2
3 要求用批处理处理后的结果为:
1+2=3
1+3=4
2+3=5
1+2+3=6
|
业精于勤而荒于嬉,形成于思而毁于随。 |
|
2006-12-30 10:54 |
|
|
a9319751
中级用户
积分 439
发帖 170
注册 2006-1-9
状态 离线
|
|
2006-12-30 19:53 |
|
|
Primalchaos
初级用户
积分 41
发帖 19
注册 2006-12-15
状态 离线
|
|
2006-12-31 04:53 |
|
|
无奈何
荣誉版主
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
6 楼』:
a9319751 兄的代码错误较多,发现的错误有丢失了组合、重复、部分计算结果错误等。
namejm 兄提出的这个问题,非常复杂。我一直没有找到好的方法,现在我能完成的最好情况也丢失 4 组组合,我知道问题出在哪里,苦于没有办法转换成有效的批处理语句。
先帖一下代码,以后有时间再完善吧,希望能看到哪位兄弟完成这个题目。
Quote: |
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set n=0
- set file=%1
- set yinzi=
- for /f "delims=" %%a in (%file%) do (
- set /a n+=1
- call :sub %%a !n!
- )
- goto :EOF
- :sub
- for /f "tokens=1,2* delims=:" %%a in ('more +%2 %file%^|findstr /n .') do (
- call set yinzi%%a=%1
- for /l %%m in (1,1,%%a) do (
- call set yinzi%%m=!!yinzi%%m!! + %%b
- call set /p x=!!yinzi%%m!! = <nul
- call set /a x=!!yinzi%%m!!
- echo !x!
- )
- )
- goto :EOF
无奈何发表于 2006-12-30 16:25 |
|
输出结果:
1 + 2 = 3
1 + 2 + 3 = 6
1 + 3 = 4
1 + 2 + 3 + 4 = 10
1 + 3 + 4 = 8
1 + 4 = 5
1 + 2 + 3 + 4 + 5 = 15
1 + 3 + 4 + 5 = 13
1 + 4 + 5 = 10
1 + 5 = 6
2 + 3 = 5
2 + 3 + 4 = 9
2 + 4 = 6
2 + 3 + 4 + 5 = 14
2 + 4 + 5 = 11
2 + 5 = 7
3 + 4 = 7
3 + 4 + 5 = 12
3 + 5 = 8
4 + 5 = 9 丢失项:
1+2+4=7
1+2+5=8
1+3+5=9
2+3+5=11
此帖被 +15 点积分 点击查看详情 评分人:【 ccwan 】 | 分数: +9 | 时间:2007-1-1 03:27 | 评分人:【 redtek 】 | 分数: +5 | 时间:2007-1-1 04:43 | 评分人:【 yuhaomiao 】 | 分数: +1 | 时间:2007-1-2 04:57 |
|
|
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-12-31 05:38 |
|
|
youxi01
高级用户
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
|
2006-12-31 12:24 |
|
|
dbc6013
初级用户
积分 55
发帖 16
注册 2006-10-27
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by 无奈何 at 2006-12-31 05:38 AM:
a9319751 兄的代码错误较多,发现的错误有丢失了组合、重复、部分计算结果错误等。
namejm 兄提出的这个问题,非常复杂。我一直没有找到好的方法.. |
|
这个问题我非常关注,能讲一下思路吗?
其他高手也可以讲一下,
在这里先谢过了。
|
|
2006-12-31 21:49 |
|
|
qzwqzw
银牌会员
天的白色影子
积分 2342
发帖 635
注册 2004-3-6
状态 离线
|
|
2007-1-1 02:31 |
|
|
Primalchaos
初级用户
积分 41
发帖 19
注册 2006-12-15
状态 离线
|
『第
10 楼』:
佩服!不但实现结果,还能显示到底有多少组组合
|
|
2007-1-1 02:52 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
11 楼』:
几位的代码确实精彩,蕴含着智慧和厚重的知识积累,是我学习的榜样。
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-1-1 03:42 |
|
|
weapfe
初级用户
积分 144
发帖 66
注册 2006-11-30
状态 离线
|
『第
12 楼』:
九楼的代码好像也...
如题.我的test.txt的内容为:
1
2
3
运行结果是:
gn1=1
gn2=2
gn3=3
请按任意键继续. . .
1:1+2=3
2:1+2+3=6
3:1+3=4
4:2+3=5
请按任意键继续. . .
不知是....
|
|
2007-1-1 04:20 |
|
|
tghksj
社区乞丐
此图片另存后死机
积分 -49
发帖 90
注册 2006-12-2
状态 离线
|
『第
13 楼』:
9楼 qzwqzw
我只能加两分,你的代码拿回家仔细看...
没看出来排除重复组合部分啊?
--------------------
我先慢慢看,
现在第一个pause之前完全理解了.....
---------------------
在 :rec 这转不出来了.............
谁能告诉我那个 %1 是怎么回事吗????
------------------------------------
知道 += 是怎么回事了........原来和C差不多....
------------------------------------
......
ECHO ON了之后
代码对着结果顺下来一遍.....
:rec 还是不大理解....
-------------------------
再看,一定看明白了~学C的时候递归就没学好,这次一定努力一下.......
----------------------
明白了......看懂了!
[ Last edited by tghksj on 2007-1-1 at 11:58 AM ]
|
我的网络笔记本.[color=Red]非联系本人请勿访问![/color]http://w.vicp.net[img]http://zhenlove.com.cn/cndos/fileup/files/QM2.jpg[/img] |
|
2007-1-1 04:43 |
|
|
flamey
初级用户
积分 152
发帖 74
注册 2005-12-1
状态 离线
|
|
2007-1-1 04:55 |
|
|
tao0610
高级用户
朦胧的世界
积分 579
发帖 218
注册 2006-10-24
状态 离线
|
|
2007-1-5 08:49 |
|