看板Programming
标 题Re: [问题] 随变数增加而增加条件式
发信站=?big5?B?SElTRFQgrbes6qzsp97F58PSprOtraS9pX (Sun Oct 14 08:03:48 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!feeder.seed.net.tw!netnews!
这边有一个 vbscript 的:
http://tlcheng.twbbs.org/TLCheng/Basic/vbs/samples/Combination.htm
是当初 vb 研究小站的递回示范,支援相同字不重复,例如:
12345 传回 120 组
猪头小瓜瓜 因为瓜瓜为重复,省略重复部分为 60 组
==> 本文由 "骨头 <[email protected]>"
> 於 news:4WSaPM%2495Z%40ptt.cc 发表
>
> ※ 引述《mycircle (Careless whisper)》之铭言:
> : ※ 引述《TonyQ (骨头)》之铭言:
> : 感谢回文和推文的网友 我把我的问题再说清楚一点好了
> : 这个问题其实是一个老问题了 我拿来做练习而已
> : 题目如下
> : 如何列出1..n 的所有排列组合
> : 例如 123 的所有排列组合 为 123 132 321 132 213 231 3! = 6种
> : 可是如果12345 勒 就将近有120种排列组合 如果扩增到 1...10勒
> : 就会有10!=3628800种
> : 的排列组合
> : 这时人脑便没办法一个一个将他展现出来了
> : 而且此类问题可以归类为NP hard 问题 也就是数字规模增大
> : 求解时间以及复杂度将会非线性的来增加
> : 我一开始的想法是用暴力法 也就是所谓的穷举法一一把他列出
> : 但我知道如网路上这位网友所提的概念
> : http://new-acos.blogspot.com/2007/07/blog-post_04.html
> : 会比较节省演算的效率与记忆体
> : 不过还是尝试写看看 因为我还是新手
> : 两种穷举法的原始码列举如下(意思是差不多的) 我写在EXCEL 的VBA上
> : 第一种 :
> : ======== 问题来了 ======
> : 在写的过程中 在第一种穷举法时
> : 我本来是想写成动态的 也就是我希望当使用者只要改变N的大小 就可以了
> : 但是我发现 以这个问题为例
> : 像for next 以及 if then 的这些条件式 都会随着N的增加而增加
> : 我就突然想到 如果以後碰到这类问题时该如何解决
> : 如果我以後只要碰到 变数增加时 我的条件式也会增加时 我该如何处理
> : 程式写得很糟 只是在写的过程中 想到这个问题
> : 所以想问看看高手是如何处理这类问题的 感谢您抽空看完我的文章 谢谢
> 基本上正常的问题碰到这种状况都会想办法转换成
> 不用变数增加判断式就跟着增加的写法 -.-;;
> 这就是为甚麽会有 NP complete & transfer and conquer的由来 XD
> 因为要转换问题变成比较好解决的问题。
> 我刚有写个sample , 不过该死的vb 6竟然不报备关掉了 ,
> 就算了 , 只留下一个recursive解 .Q_Q
> ────────────────────────────────
> 当初在做这题的时候我是取巧用string来做
> 当然这题也是典型的递回题
> 记得他没有内建stack类别 , 所以就建议用递回写
> 当然算排列组合的话 , 这还不是最快的 ,
> 因为你可以把reverse算一种 , 可以减少一半的cost .
>
> ────────────────────────────────
> Dim inputStr As String
> inputStr = "12345"
> Dim n As Integer
> n = Len(inputStr)
> printStr "", inputStr
> Sub printStr(strNow As String, strNext As String)
> Dim n
> n = Len(strNext)
> If n = 0 Then
> List1.AddItem (strNow)
> '用你想要显示的方法替换掉
> Else
> For i = 1 To n
> printStr strNow & Mid(strNext, i, 1), Mid(strNext, 1, i - 1) & _
> Mid(strNext, i + 1, n - i)
> Next
> End If
> End Sub
>
>
>
--
风禹科技验证有限公司 ASP.NET Web News Reader 0.2.7 UTF-8 Beta
网站地图
http://tlcheng.twbbs.org/wwwmap.htm
流域防洪/区域水资源/徐昇网/玫瑰图/语音通讯 文章与程式
Basic/Fortran/Windows API/.Net/辅助说明档 原始码、文章与讨论
微软程式设计、系统管理使用新技术论坛讨论区,网友回覆後即时简讯、电子邮件通知:
MSDN:
http://forums.microsoft.com/msdn-cht/default.aspx?siteid=14
TechNet:
http://forums.microsoft.com/technet-cht/default.aspx?siteid=23
--
ASPNET News Reader
http://tlcheng.twbbs.org/News/Reader.aspx
RSS 2.0
http://tlcheng.twbbs.org/News/rss2.aspx?Action=List&Newsgroup=tw.bbs.comp.language