[HELP] Tổ hợp, chỉnh hợp

Liên hệ QC

xiilliilliix

Thành viên mới
Tham gia
10/3/11
Bài viết
19
Được thích
2
Em có bài toán sau... mong các anh chị giúp đỡ.
Có bao nhiêu cách để tạo ra một dãy số gồm 6 chữ số từ tập hợp gồm 5 số {0,1,2,3,4} với điều kiện là số đứng trước luôn nhỏ hơn hoặc bằng số đứng sau. Và các tạo ra dãy số này trong excel.
VD : 000001, 011123, 112233, 112234, 223344..........................đến 444444
Bảng
A B C D E F
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
Cảm ơn các anh chị rất nhiều
 
Lần chỉnh sửa cuối:
Em có bài toán sau... mong các anh chị giúp đỡ.
Có bao nhiêu cách để tạo ra một dãy số gồm 6 chữ số từ tập hợp gồm 5 số {0,1,2,3,4} với điều kiện là số đứng trước luôn nhỏ hơn hoặc bằng số đứng sau. Và các tạo ra dãy số này trong excel.
VD : 000001, 011123, 112233, 112234, 223344..........................đến 444444
Bảng
A B C D E F
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
Cảm ơn các anh chị rất nhiều
Bạn sử dụng thử code này xem có đúng với yêu cầu của bạn không?
Mã:
Const dodai = 6
Dim k As Long, s As String, so
Public Sub test()
s = "": k = 1
so = Array(0, 1, 2, 3, 4)
Xepso 0
End Sub

Public Sub Xepso(i As Integer)
Dim j As Integer
If Len(s) = dodai Then
            Range("A" & k).Value = "'" & s
            k = k + 1
            Exit Sub
End If
For j = 0 To 4
    If so(i) <= so(j) Then
        s = s & so(j)
        Xepso (j)
        s = Left(s, Len(s) - 1)
    End If
Next j
End Sub
 
Lần chỉnh sửa cuối:
Bài chỉ đòi hỏi tới 6 chữ số; con số nằm trong vòng giới hạn của một biến Long
Cách dễ nhất là cho biến chạy từ 0 đến 444444; và xét sự thích ứng của mỗi số.

Mã:
' hàm tính xem một số có dạng một chữ số phải nhỏ hơn hay bằng chữ số bên phải nó
Function PhaiLonHon(byVal so As Long) As Boolean
Dim cs0 As Integer, cs1 As Integer ' chữ số hiện tại và chữ số bên phải nó
PhaiLonHon = False
cs1 = 9 ' đặt trước là trị lớn nhất
Do While so > 0
cs0 = so Mod 10
If cs0 > cs1 Then Exit Function
cs1 = cs0
so = so \ 10
Loop
PhaiLonHon = True
End Function


Sao trên đời có những ngừoi mít ướt thế nhỉ. Mới 1 vài tiếng đồng hồ đã tè ra rồi.
 
Quên mất. Vì chỉ sử dụng được từ 0 đến 4 cho nên phải dùng kiểu số ngũ phân (0-4).
Trong hàm trên, sửa dòng
If cs0 > cs1 Then Exit Function
thành
If cs0 > 4 Or cs0 > cs1 Then Exit Function

Hoàn chỉnh hơn:

Mã:
' hàm tính xem một số có dạng một chữ số phải nhỏ hơn hay bằng chữ số bên phải nó
Function PhaiLonHon(byVal so As Long, Optional byVal lonNhat As Integer = 9) As Boolean
Dim cs0 As Integer, cs1 As Integer ' chữ số hiện tại và chữ số bên phải nó
PhaiLonHon = False
cs1 = lonNhat ' đặt trước là trị lớn nhất
Do While so > 0
cs0 = so Mod 10
If cs0 > cs1 Then Exit Function
cs1 = cs0
so = so \ 10
Loop
PhaiLonHon = True
End Function

Lúc gọi hàm:

chuan = PhaiLonHon(so, 4)
 
Lần chỉnh sửa cuối:
Bài chỉ đòi hỏi tới 6 chữ số; con số nằm trong vòng giới hạn của một biến Long
Cách dễ nhất là cho biến chạy từ 0 đến 444444; và xét sự thích ứng của mỗi số.

Mã:
' hàm tính xem một số có dạng một chữ số phải nhỏ hơn hay bằng chữ số bên phải nó
Function PhaiLonHon(byVal so As Long) As Boolean
Dim cs0 As Integer, cs1 As Integer ' chữ số hiện tại và chữ số bên phải nó
PhaiLonHon = False
cs1 = 9 ' đặt trước là trị lớn nhất
Do While so > 0
cs0 = so Mod 10
If cs0 > cs1 Then Exit Function
cs1 = cs0
so = so \ 10
Loop
PhaiLonHon = True
End Function



Sao trên đời có những ngừoi mít ướt thế nhỉ. Mới 1 vài tiếng đồng hồ đã tè ra rồi.
Bạn sử dụng thử code này xem có đúng với yêu cầu của bạn không?
Mã:
Const dodai = 6
Dim k As Long, s As String, so
Public Sub test()
s = "": k = 1
so = Array(0, 1, 2, 3, 4)
Xepso 0
End Sub

Public Sub Xepso(i As Integer)
Dim j As Integer
If Len(s) = dodai Then
            Range("A" & k).Value = "'" & s
            k = k + 1
            Exit Sub
End If
For j = 0 To 4
    If so(i) <= so(j) Then
        s = s & so(j)
        Xepso (j)
        s = Left(s, Len(s) - 1)
    End If
Next j
End Sub

Nói thật là em mù tịt Visual Basic.... muốn chạy mấy cái này phải làm sao? Các anh chị chỉ giúp. Thanksssssss
 
Tôi sợ được "thánh" lắm. Xin phép chạy
Hẹn gặp lần khác
C U Next Time
 
Nói thật là em mù tịt Visual Basic.... muốn chạy mấy cái này phải làm sao? Các anh chị chỉ giúp. Thanksssssss
Nói thật tôi cũng mù tịch cái vụ giúp đỡ bằng niềm tin rồi, thôi thì thay vì không biết sao bạn không đưa file giả lập có dữ liệu mẫu để mọi người giúp chứ nói thế này ai biết bạn cần dữ liệu như thế nào mà lần, lần, lần, lần ... chắc chết quá.
 
Em đã lên youtube xem cái visual basic for beginner và đã chạy được dòng code của các anh chị rồi. I love u all
 
Web KT
Back
Top Bottom