关于 排列组合算法 请高手赐教

qfzcx 2006-02-22 10:02:46
有R、P、C三个字母和三个运算符-、//、*、需要实现
(1)先把 3个字母进行排列,得到几组不同的排列顺序
(2)再从三种运算符中任选两种插入到三个字母的中间(可以重复)。如
R-P//C;p-R-C;等等形式
把所有形式输出显示。
请高手赐教!谢谢!
...全文
173 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
junki 2006-02-22
  • 打赏
  • 举报
回复
数学里面的排列组合
tmd007 2006-02-22
  • 打赏
  • 举报
回复
直观方法:
Private Sub Command1_Click()
Dim a, b, i, j, k, m, n, s(), t
a = Array("R", "P", "C")
b = Array("-", "//", "*")

For i = 0 To 2
For j = 0 To 2
For k = 0 To 2
If k <> i Then
For m = 0 To 2
For n = 0 To 2
If n <> i And n <> k Then
t = t + 1
ReDim Preserve s(1 To t)
s(t) = a(i) & b(j) & a(k) & b(m) & a(n)
End If
Next n
Next m
End If
Next k
Next j
Next i

Debug.Print Join(s, vbNewLine)
Debug.Print t
End Sub

northwolves 2006-02-22
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim X() As String, I As Integer, J As Integer, K As Integer, TEMP As String, TEMP1 As String, S() As String, N As Integer
X() = Split("R1P2C,R1C2P,P1C2R,P1R2C,C1R2P,C1P2R", ",")
For I = 0 To 5
TEMP = X(I)
For J = 1 To 3
TEMP1 = Replace(TEMP, "1", Array("-", "//", "*")(J - 1))
For K = 1 To 3
N = N + 1
ReDim Preserve S(1 To N)
S(N) = Replace(TEMP1, "2", Array("-", "//", "*")(K - 1))
Next
Next
Next
Debug.Print Join(S, vbCrLf)
Debug.Print "共 " & N & " 个!"
End Sub


返回:

R-P-C
R-P//C
R-P*C
R//P-C
R//P//C
R//P*C
R*P-C
R*P//C
R*P*C
R-C-P
R-C//P
R-C*P
R//C-P
R//C//P
R//C*P
R*C-P
R*C//P
R*C*P
P-C-R
P-C//R
P-C*R
P//C-R
P//C//R
P//C*R
P*C-R
P*C//R
P*C*R
P-R-C
P-R//C
P-R*C
P//R-C
P//R//C
P//R*C
P*R-C
P*R//C
P*R*C
C-R-P
C-R//P
C-R*P
C//R-P
C//R//P
C//R*P
C*R-P
C*R//P
C*R*P
C-P-R
C-P//R
C-P*R
C//P-R
C//P//R
C//P*R
C*P-R
C*P//R
C*P*R
共 54 个!
lsftest 2006-02-22
  • 打赏
  • 举报
回复
只有三个字母好办。。。。
一个字符串数组存储rpc的六种排列顺序。。。
然后在数组的每个元素添加各种运算符。。。。每个元素有九种添加符号方式。。。
所以总共应该有54种结果。。。。。。。。。

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧