Visual_Basic 板


LINE

※ 引述《kain1230 (简单至上)》之铭言: : 不好意思,最近和学生在讨论一个填数问题,目前遇到组合大过庞大, : 因此人工计算过於繁复,想藉助Excel来解决, : 我们有16个变量 a,b,c,...,p : 每个变量都是1到16的正整数,且各自彼此都不同, : 我们处理得到的方程有以下几个 : a+b+c+d+e+f+g=49 : 2*b+c+2*d+e+2*f+g=87 : h+i+j=d+e+f : k+l+m=b+g+f : n+o+p=b+c+d 用基本的排列方法,我写的是这样: 没有设定一些捷径跳线之类的优化, 跑了约16小时做到的排列是 1,2, 3, 7, ... 用1.5GHz, 1.99GB的电脑. 不过到此为止还没找到解. Sub MyPerm() Dim a(0 To 15) As Integer For i = 0 To 15 a(i) = i + 1 Next i GenPermutation a, 0 End Sub Sub GenPermutation(Arr() As Integer, base As Integer, Optional RowNum As Integer = 1) If base >= UBound(Arr) Then If check(Arr) = True Then listNumbers Arr, RowNum RowNum = RowNum + 1 End If DoEvents Else For i = base To UBound(Arr) swap Arr(base), Arr(i) GenPermutation Arr, base + 1, RowNum swap Arr(base), Arr(i) Next i End If End Sub Sub swap(a, b) t = a a = b b = t End Sub Sub listNumbers(Arr() As Integer, RowNum As Integer) If LBound(Arr) > UBound(Arr) Then Else For i = LBound(Arr) To UBound(Arr) Sheet1.Cells(RowNum + 1, i + 1) = Arr(i) Next i End If End Sub Function check(Arr() As Integer) As Boolean Dim result As Boolean result = True result = result And (sum(Arr, 0, 1, 2, 3, 4, 5, 6) = 49) If result = False Then Exit Function result = result And (sum(Arr, 1, 1, 2, 3, 3, 4, 5, 5, 6) = 87) If result = False Then Exit Function result = result And (sum(Arr, 7, 8, 9) = sum(Arr, 3, 4, 5)) If result = False Then Exit Function result = result And (sum(Arr, 10, 11, 12) = sum(Arr, 1, 5, 6)) If result = False Then Exit Function result = result And (sum(Arr, 13, 14, 15) = sum(Arr, 1, 2, 3)) check = result End Function Function sum(Arr() As Integer, ParamArray i() As Variant) As Integer sum = 0 For j = LBound(i) To UBound(i) sum = sum + Arr(i(j)) Next j End Function --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.54.90
1F:推 ClubT:我觉得可以到 Prob_Solve 板去问问 01/30 22:25
2F:推 EdisonX:奇偶特性应可拿来做一点点加速应用 ? 01/30 23:14
3F:→ EdisonX:ex, (c+e+g)=odd, a+b+d+f=even, ... 01/30 23:14
4F:→ EdisonX:( 还有 a mod 2 == (b+d+f) mod 2 ) 01/30 23:16







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP