求助:qbasic字符串编程问题
来源:百度知道 编辑:UC知道 时间:2024/05/16 04:25:48
这是电子工业出版社出版的QBASIC教材上的习题
朱若愚主编
谢谢,如果编程能运行,我还可加分,多少可商量
谢谢yuxichu,你希望要多少分呢?
这个问题应该是一个NP难问题,不过它只有四个字符串,还是可以求解,下面给出一个常规的算法,求解这个问题是很快的。
下面的函数求出它们连接后最长的字符串,至于接收用户输入、显示结果,你就自己搞定吧。
祝你好运!
=========================================================
'4个字符串,如果某字符串末尾一个字符与另一字符串开头字符相同,就把两个字符串接起来,
'每次字符串最多被用一次,得到最长的结果
Function MaxString(ByVal a As String, ByVal b As String, ByVal c As String, ByVal d As String) As String
Dim str(4) As String '字符串数组,第一个元素设为0
Dim used(4) As Boolean '指示字符是否已被选择
Dim seq(3) As Long '指示选择的次序
Dim tmp As String '临时字符串
Dim i As Long, j As Long, k As Long, x As Long
str(1) = a: str(2) = b: str(3) = c: str(4) = d
used(0) = True: MaxString = ""
For i = 0 To 625 '5^4
'选择一个字符串序列
For j = 1 To 4
used(j) = False
Next j
k = 0: j = i
While (j > 0)
x = j Mod 5
If used(x) = False Then
seq(k) = x