|
暴力破解算法,供对比:
- Sub test()
- Dim i&, j&, k&, n&, r&, s$, t&
- For i = 103 To 198 '第1个3位数 i 首位=1
- For j = 203 To 298 '第2个3位数 j 首位=2
- For k = 3 To 9 '剩下的1位数 k
- t = 999 - i - j - k '计算第3个3位数
- If t > j Then '保证比第2个3位数大时
- s = i & j & k & t '合并4个数组成字符串
- If Chk(s) Then '检查该字符串没有重复数字(即能包含0-9且不重复)
- n = n + 1: Cells(n, 1) = t: Cells(n, 2) = i & "+" & j & "+" & k & "+" & t '输出结果
- If t > r Then r = t '记录最大值
- End If
- End If
- Next k, j, i
- [a1].Resize(n, 2).Sort [a1], 2 '结果倒排序
- MsgBox r
- End Sub
- Function Chk(s$) As Boolean
- Dim i&, t$
- For i = 1 To 9
- t = Mid(s, i, 1): If InStr(i + 1, s, t) Then Exit Function
- Next
- Chk = True
- End Function
复制代码 |
评分
-
查看全部评分
|