求助:qbasic字符串编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 04:25:48
编程序从键盘输入4个字符串,如果某字符串末尾一个字符与另一字符串开头字符相同,就把两个字符串接起来,每次字符串最多被用一次,怎样接能够得到最长的结果?
这是电子工业出版社出版的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