21-09-20, 04:51 PM
هذه مسألة شهيرة جدا اسمها Permutations
حلي يستخدم recursive function تنادي نفسها ، نقوم بحذف حرف حرف من الكلمة ونحسب احتمالات الباقي ونضيف النتائج الى بعضها :
استخدامها
تصلح لاي طول نص طبعا ولكن عند الكلمات الكبيرة تصبح الاحتمالات اكثر وبالتالي تأخذ وقت اطول
حلي يستخدم recursive function تنادي نفسها ، نقوم بحذف حرف حرف من الكلمة ونحسب احتمالات الباقي ونضيف النتائج الى بعضها :
كود :
Function Permutations(word As String) As List(Of String)
If word.Length = 1 Then
Return New List(Of String)({word})
Else
Dim ReturnedList As New List(Of String)
For i As Integer = 0 To word.Length - 1
Dim FirstLetter As Char = word(i)
Dim NewString As String = word.Remove(i, 1)
Dim NewPermutation = Permutations(NewString)
For Each S In NewPermutation
ReturnedList.Add(S & FirstLetter)
Next
Next
Return ReturnedList
End If
End Functionاستخدامها
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Word As String = TextBox1.Text
ListBox1.DataSource = Permutations(Word)
End Subتصلح لاي طول نص طبعا ولكن عند الكلمات الكبيرة تصبح الاحتمالات اكثر وبالتالي تأخذ وقت اطول

