amin.m1993
دوشنبه 17 مهر 1391, 22:44 عصر
سلام.
دوستان کسی هست که یه الگوریتم بازگشتی برای نمایش جایگشت های n عضوی یک مجموعه ی n عضوی بلد باشه؟
البته من سرچ کردم اما یه کد توی VB پیدا کردم اما چون VB بلد نیستم چیزی نفهمیدم اگه نتونستید بنویسید لطفا کد زیر رو به C# تبدیل کنید.
ممنون
Private Sub Command1_Click()
Dim N As Long, A() As Long, I As Long
N = Val(Text1.Text)
ReDim A(1 To N)
For I = 1 To N
A(I) = I
Next
List1.Clear
MySub A, 1, N
End Sub
Private Sub MySub(ByRef List() As Long, ByVal Index As Long, ByVal Count As Long)
Dim Pos As Long, Temp As Long
If Index > Count Then
ShowList List, Count
Exit Sub
End If
MySub List, Index + 1, Count
For Pos = Index + 1 To Count
Temp = List(Pos)
List(Pos) = List(Index)
List(Index) = Temp
MySub List, Index + 1, Count
List(Index) = List(Pos)
List(Pos) = Temp
Next
End Sub
Private Sub ShowList(ByRef List() As Long, ByVal Count As Long)
Dim Index As Long, Str As String, Num As String
For Index = 1 To Count
Str = Str & Chr(64 + List(Index)) & " "
Next
Num = CStr(List1.ListCount + 1)
Num = Space(4 - Len(Num)) & Num
List1.AddItem Num & ") " & Str
End Sub
دوستان کسی هست که یه الگوریتم بازگشتی برای نمایش جایگشت های n عضوی یک مجموعه ی n عضوی بلد باشه؟
البته من سرچ کردم اما یه کد توی VB پیدا کردم اما چون VB بلد نیستم چیزی نفهمیدم اگه نتونستید بنویسید لطفا کد زیر رو به C# تبدیل کنید.
ممنون
Private Sub Command1_Click()
Dim N As Long, A() As Long, I As Long
N = Val(Text1.Text)
ReDim A(1 To N)
For I = 1 To N
A(I) = I
Next
List1.Clear
MySub A, 1, N
End Sub
Private Sub MySub(ByRef List() As Long, ByVal Index As Long, ByVal Count As Long)
Dim Pos As Long, Temp As Long
If Index > Count Then
ShowList List, Count
Exit Sub
End If
MySub List, Index + 1, Count
For Pos = Index + 1 To Count
Temp = List(Pos)
List(Pos) = List(Index)
List(Index) = Temp
MySub List, Index + 1, Count
List(Index) = List(Pos)
List(Pos) = Temp
Next
End Sub
Private Sub ShowList(ByRef List() As Long, ByVal Count As Long)
Dim Index As Long, Str As String, Num As String
For Index = 1 To Count
Str = Str & Chr(64 + List(Index)) & " "
Next
Num = CStr(List1.ListCount + 1)
Num = Space(4 - Len(Num)) & Num
List1.AddItem Num & ") " & Str
End Sub