本來想說用迴圈,不過 步驟比較麻煩 Private Sub Form_Activate() Open App.Path & "\in.txt" For Input As #1 Open App.Path & "\out.txt" For Output As #2 Input #1, step step = Replace(step, " ", "") Call ans(step, st) Close #1 Close #2 End Sub
Function ans(step, st) If Len(st) < Len(step) Then For i = 1 To Len(step) stm = Mid(step, i, 1) If InStr(st, stm) = 0 Then Call ans(step, st & stm) Next i Else Print #2, st End If End Function
Dim StrQ Private Sub Form_Load() Me.Hide Open App.Path & "\in.txt" For Input As #1 Open App.Path & "\out.txt" For Output As #2 Line Input #1, StrQ StrQ = Replace(StrQ, " ", "") Call F(StrQ, ans) Close #2 Close #1 End End Sub Public Function F(StrQ, ans) If Len(StrQ) > Len(ans) Then For i = 1 To Len(StrQ) ansST = Mid(StrQ, i, 1) If InStr(ans, ansST) = 0 Then Call F(StrQ, ans & ansST) Next i Else Print #2, ans End If End Function
本來想說用迴圈,不過 步驟比較麻煩
回覆刪除Private Sub Form_Activate()
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, step
step = Replace(step, " ", "")
Call ans(step, st)
Close #1
Close #2
End Sub
Function ans(step, st)
If Len(st) < Len(step) Then
For i = 1 To Len(step)
stm = Mid(step, i, 1)
If InStr(st, stm) = 0 Then Call ans(step, st & stm)
Next i
Else
Print #2, st
End If
End Function
由於這題實在不太懂要怎麼做,
回覆刪除所以就請教了阿揚了!!
Dim StrQ
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Line Input #1, StrQ
StrQ = Replace(StrQ, " ", "")
Call F(StrQ, ans)
Close #2
Close #1
End
End Sub
Public Function F(StrQ, ans)
If Len(StrQ) > Len(ans) Then
For i = 1 To Len(StrQ)
ansST = Mid(StrQ, i, 1)
If InStr(ans, ansST) = 0 Then Call F(StrQ, ans & ansST)
Next i
Else
Print #2, ans
End If
End Function
阿揚、小白好,
回覆刪除說實話,你們真強,這題我會出題,還真是不會用遞迴來做呢。
很好,要記起來,要背起來,教教另外的兩個吧。
(我也要學學啊,教學相長嗎?謝謝啦。)
不過,這題是真的要用遞迴來解,才是正解。
我的話,會用檔案寫寫再讀讀的方式來解。
當然,也可以用list來當成檔案的方式來寫跟讀。
當然,可以用遞迴解的題目,理論上,(我大學裡上過),一定可以用迴圈來解。
只是,阿揚真的可以用迴圈解出來嗎?
努力一下,我給獎金,100。如何。試試吧。
哦,忘了補充一下,這題我在出題時,並不是以一個字為限,
回覆刪除所以,阿揚在解題時,將所有的空白直接去掉並不是正確的。
再試試。例如
12 ab 台灣 happy