[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
for嵌套...

TOP

这个很短小。@echo off
call:perm "a b c xy z"
pause

:perm  // code by plp
setlocal enabledelayedexpansion&set "s=%~1 "
if "!s: =!" == ""  (echo %~2)else for %%b in (%~1)do call:perm "!s:%%b =!"  ...
plp626 发表于 2011-4-21 13:48

我现在只要看到能用call的地方,都会想到兄台这段代码,今天就在缘鸟看到一个关于整数划分的问题,感觉很可能可以套用该思路
http://www.autobatch.org/bbs/vie ... &extra=page%3D1
但是写了半天,也没能模仿出来,能否请plp兄用call的办法解题,做个示范呢?以前一直感觉call和goto是累赘,但是现在发现call用好了也可以很强大,所以想学一点这些方面的技巧

TOP

16# zm900612

你首先得给问题找到一个递归关系(recursion case),然后确定初始态(base case),比如n!=n*(n-1)!光有这个递归关系还不行,一定得有个出发点,就是所谓的base case, 它是递归函数终止的标志。

...
plp626 发表于 2011-5-21 15:00


嗯,确实,那个题目若用call来解决,我只有个感觉可行的大方向,却整不出一条很有逻辑的明晰的思路。

TOP

null

24# caruko
晕,原来你们早就想到了,我刚才一直没看这个贴子,不小心侵权(虽然确实是自己想的不过思路撞车是事实,而且我贴子发得比较晚…),明天上了电脑再编辑那个贴子。还有,plp兄发的函数我没看懂,明个也好好研究下

TOP

29# plp626


嗯,本质上确实是一样的...原先没注意看52兄的第三个代码,但是大概扫了一眼留下印象了吧,后来自己的思路也是这个路线的,汗

TOP

30# powerbat


我不知道有没理解对,老兄似乎是说全部列举出来再排除重复,但是这样效率太低了,假设有7个项,每个项都能多次使用而且不排除重复的所有排列=7的7次方=823543,但是题目所要求的真正的组合=!7=5040,也就是说,后者比前者少计算了八十多万次,这是不可忍受的。
所以粗看了下大家的代码,大部分是用批处理实现!7的计算方式,以节省用时

TOP

33# powerbat


噢,那是我理解问题了呵呵

TOP

返回列表