Bài toán tìm đoạn ít đường nhất. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tamhoang.pm

Thành viên mới
Tham gia
13/1/15
Bài viết
40
Được thích
3
Tôi có 65 cột và mỗi cột rải rác (random) các số 1 và ô trắng.

Xin mọi người giúp tôi đoạn code tìm ra ít nhất các cột ghép lại thỏa mãn điều kiện tổng của tất cả các dòng phải lớn hơn hoặc = 1.

Nếu có nhiều kết quả thì ... lấy hết các kết quả ít nhất đó.

Cảm ơn mọi người.
 

File đính kèm

Tôi có 65 cột và mỗi cột rải rác (random) các số 1 và ô trắng.

Xin mọi người giúp tôi đoạn code tìm ra ít nhất các cột ghép lại thỏa mãn điều kiện tổng của tất cả các dòng phải lớn hơn hoặc = 1.

Nếu có nhiều kết quả thì ... lấy hết các kết quả ít nhất đó.

Cảm ơn mọi người.

Nếu đúng như bạn nhấn mạnh ở từ in đậm thì tôi ấy cột nào cũng được (1 cột, tức là ít nhất là 1 cột), tổng các số trên cột đó của tất cả các dòng đều >=1 (bạn có tính ở dòng 61)

Xin hãy nói rõ câu hỏi
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi có 65 cột và mỗi cột rải rác (random) các số 1 và ô trắng.

Xin mọi người giúp tôi đoạn code tìm ra ít nhất các cột ghép lại thỏa mãn điều kiện tổng của tất cả các dòng phải lớn hơn hoặc = 1.

Nếu có nhiều kết quả thì ... lấy hết các kết quả ít nhất đó.

Cảm ơn mọi người.

Tìm ra rồi làm sao?
Bạn có cột cuối là tổng các cột, dòng 55 là 2, là số nhỏ nhất >1, tô màu dòng 55 là xong.
Hay là tôi chưa hiểu rõ yêu cầu........
 
Lần chỉnh sửa cuối:
Upvote 0
Tìm ra rồi làm sao?
Bạn có cột cuối là tổng các cột, dòng 55 là 2, là số nhỏ nhất >1, tô màu dòng 55 là xong.
Hay là tôi chưa hiểu rõ yêu cầu........

cái chữ tổng của tất cả các dòng không phải là công thức ở cột BN đâu bác Ba à , nó chỉ là tượng trưng thôi .
Tổng ở đây là tổng của mỗi dòng trên những cột nào mà bác Ba chọn phải lớn hơn 1 .
Ví dụ bác Ba chọn cột tổ hợp cột (BL,BM) thì mỗi phép toán sum(BL2:BM2) cho tới sum(BL60:BM60) đều phải >=1 .
Bài toán này là tìm ra tổ hợp cột nào đó có số cột ít nhất để thỏa mãn điều kiện trên .
 
Upvote 0
Tôi có 65 cột và mỗi cột rải rác (random) các số 1 và ô trắng.

Xin mọi người giúp tôi đoạn code tìm ra ít nhất các cột ghép lại thỏa mãn điều kiện tổng của tất cả các dòng phải lớn hơn hoặc = 1.

Nếu có nhiều kết quả thì ... lấy hết các kết quả ít nhất đó.

Cảm ơn mọi người.
Tôi không đủ kiên nhẫn để test dữ liệu của bạn.
Bạn thử sửa code để test dữ liệu của bạn xem mất mấy giờ -+*/.

Code này có thể sửa lại để cải thiện tốc độ nhưng với dữ liệu của bạn chắc cũng không ăn thua.
PHP:
Sub CallMe()
Dim ArrData, ArrMissing() As Long, Min As Long, Result() As Long, ArrResult()
ArrData = Sheet3.Range("A2:Z20").Value
Min = UBound(ArrData, 2) + 1
ReDim Result(0 To 0)
ReDim ArrMissing(0 To UBound(ArrData, 1))
For i = 1 To UBound(ArrMissing, 1)
    ArrMissing(i) = i
Next
ReDim ArrResult(0 To 0)
FindResult ArrResult, Result, ArrMissing, ArrData, 1, Min
Sheet2.UsedRange.ClearContents
For i = 1 To UBound(ArrResult, 1)
    Sheet2.Cells(i, 1).Resize(, Min + 1).Value = ArrResult(i)
Next
End Sub
PHP:
Private Sub FindResult(ByRef ArrResult, ByVal Result, ByVal ArrMissing, ByRef ArrData, ByVal Col As Long, ByRef Min As Long)
Dim i As Long, Result0() As Long, ArrMissing0() As Long
If Col > UBound(ArrData, 2) Then Exit Sub
If UBound(Result, 1) >= Min Then Exit Sub
Result0 = Result
ArrMissing0 = ArrMissing
If Not CheckCol(Result, ArrMissing, ArrData, Col) Then
    FindResult ArrResult, Result, ArrMissing, ArrData, Col + 1, Min
Else
    If UBound(Result, 1) < Min Then
        Min = UBound(Result, 1)
        ReDim ArrResult(0 To 1)
        ArrResult(1) = Result
    Else
        ReDim Preserve ArrResult(0 To UBound(ArrResult, 1) + 1)
        ArrResult(UBound(ArrResult, 1)) = Result
    End If
End If
FindResult ArrResult, Result0, ArrMissing0, ArrData, Col + 1, Min
End Sub
PHP:
Private Function CheckCol(ByRef Result, ByRef ArrMissing, ByRef ArrData, ByRef Col As Long) As Boolean
Dim i As Long
For i = UBound(ArrMissing, 1) To 1 Step -1
    If ArrData(ArrMissing(i), Col) > 0 Then
        ArrMissing(i) = ArrMissing(UBound(ArrMissing, 1))
        ReDim Preserve ArrMissing(0 To UBound(ArrMissing, 1) - 1)
    End If
Next
ReDim Preserve Result(0 To UBound(Result, 1) + 1)
Result(UBound(Result, 1)) = Col
CheckCol = (UBound(ArrMissing, 1) = 0)
End Function
 

File đính kèm

Upvote 0
Dùng thuật toán vét cạn để xử lý. (Đáp án là 14 cột)
Nhưng phải áp dụng điều kiện để bẻ gãy các nhánh (nhằm bỏ qua các trường hợp thừa).

Cái này như lập trình giải thuật giải Sudoku... nhưng khó hơn. Tôi post lên để mọi người giúp làm sao bẻ gãy các nhánh không cần thiết .... (Nếu như chạy bo thì chắc phải mất cả ngày mới xong).....

Chính vì quá lâu nên mong mọi người giúp .....
 
Upvote 0
cái chữ tổng của tất cả các dòng không phải là công thức ở cột BN đâu bác Ba à , nó chỉ là tượng trưng thôi .
Tổng ở đây là tổng của mỗi dòng trên những cột nào mà bác Ba chọn phải lớn hơn 1 .
Ví dụ bác Ba chọn cột tổ hợp cột (BL,BM) thì mỗi phép toán sum(BL2:BM2) cho tới sum(BL60:BM60) đều phải >=1 .
Bài toán này là tìm ra tổ hợp cột nào đó có số cột ít nhất để thỏa mãn điều kiện trên .

Như ở trên tôi nói! Đáp án bài này là 14 cột mà (ít cột nhất) phù hợp điều kiện Dòng nào cũng có ít nhất 1 giá trị 1 (Nghĩa là tổng của bất kỳ dòng nào của 14 cột đó đều >=1).

Nhưng hiện tại nếu quét hết trường hợp (Ví dụ chưa biết KQ là 14) thì phải mất cả ngày mới ra ...
Mong anh em giúp đỡ giải thuật nào đó đơn giản mà code chạy nhanh giúp mình ... Để sau này phát triển lên ma trận lớn hơn với n cột, m dòng ... cũng sẽ xử lý dễ dàng hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
HuHu chỉ tìm được 15 cột không biết sai chổ nào
[TABLE="width: 427"]
[TR]
[TD="class: xl64, width: 35"]2[/TD]
[TD="class: xl63, width: 27"]3[/TD]
[TD="class: xl63, width: 27"]5[/TD]
[TD="class: xl63, width: 27"]1[/TD]
[TD="class: xl63, width: 27"]16[/TD]
[TD="class: xl63, width: 27"]7[/TD]
[TD="class: xl63, width: 34"]10[/TD]
[TD="class: xl63, width: 34"]54[/TD]
[TD="class: xl63, width: 27"]34[/TD]
[TD="class: xl63, width: 27"]57[/TD]
[TD="class: xl63, width: 27"]9[/TD]
[TD="class: xl65, width: 27"]19[/TD]
[TD="class: xl63, width: 27"]14[/TD]
[TD="class: xl63, width: 27"]23[/TD]
[TD="class: xl63, width: 27"]41[/TD]
[/TR]
[/TABLE]
 
Upvote 0
HuHu chỉ tìm được 15 cột không biết sai chổ nào
[TABLE="width: 427"]
[TR]
[TD="class: xl64, width: 35"]2[/TD]
[TD="class: xl63, width: 27"]3[/TD]
[TD="class: xl63, width: 27"]5[/TD]
[TD="class: xl63, width: 27"]1[/TD]
[TD="class: xl63, width: 27"]16[/TD]
[TD="class: xl63, width: 27"]7[/TD]
[TD="class: xl63, width: 34"]10[/TD]
[TD="class: xl63, width: 34"]54[/TD]
[TD="class: xl63, width: 27"]34[/TD]
[TD="class: xl63, width: 27"]57[/TD]
[TD="class: xl63, width: 27"]9[/TD]
[TD="class: xl65, width: 27"]19[/TD]
[TD="class: xl63, width: 27"]14[/TD]
[TD="class: xl63, width: 27"]23[/TD]
[TD="class: xl63, width: 27"]41[/TD]
[/TR]
[/TABLE]

Bạn đưa code lên mọi người nghiên cứu được không?
Code của tôi là code dùng vòng lặp nên chạy cả ngày mới xong nên đưa lên anh chị em cười chết ... :(

Kết quả: [TABLE="width: 546"]
[TR]
[TD="width: 39, align: right"]14[/TD]
[TD="width: 39, align: right"]15[/TD]
[TD="width: 39, align: right"]1[/TD]
[TD="width: 39, align: right"]29[/TD]
[TD="width: 39, align: right"]6[/TD]
[TD="width: 39, align: right"]49[/TD]
[TD="width: 39, align: right"]50[/TD]
[TD="width: 39, align: right"]21[/TD]
[TD="width: 39, align: right"]10[/TD]
[TD="width: 39, align: right"]36[/TD]
[TD="width: 39, align: right"]12[/TD]
[TD="width: 39, align: right"]13[/TD]
[TD="width: 39, align: right"]39[/TD]
[TD="width: 39, align: right"]57[/TD]
[/TR]
[/TABLE]

Đây chỉ là 1 KQ thôi! chưa lấy được hết KQ như code của bạn @huuthang_bd

Chạy ra đc 1kq đã oải quá rồi nên stop lại ... :(
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn đưa code lên mọi người nghiên cứu được không?
Code của tôi là code dùng vòng lặp nên chạy cả ngày mới xong nên đưa lên anh chị em cười chết ... :(

Kết quả: [TABLE="width: 546"]
[TR]
[TD="width: 39, align: right"]14[/TD]
[TD="width: 39, align: right"]15[/TD]
[TD="width: 39, align: right"]1[/TD]
[TD="width: 39, align: right"]29[/TD]
[TD="width: 39, align: right"]6[/TD]
[TD="width: 39, align: right"]49[/TD]
[TD="width: 39, align: right"]50[/TD]
[TD="width: 39, align: right"]21[/TD]
[TD="width: 39, align: right"]10[/TD]
[TD="width: 39, align: right"]36[/TD]
[TD="width: 39, align: right"]12[/TD]
[TD="width: 39, align: right"]13[/TD]
[TD="width: 39, align: right"]39[/TD]
[TD="width: 39, align: right"]57[/TD]
[/TR]
[/TABLE]

Đây chỉ là 1 KQ thôi! chưa lấy được hết KQ như code của bạn @huuthang_bd

Chạy ra đc 1kq đã oải quá rồi nên stop lại ... :(
Khi nào tìm được 14 cột sẽ gởi lên, nếu không được sẽ trốn luôn
 
Upvote 0
Khi nào tìm được 14 cột sẽ gởi lên, nếu không được sẽ trốn luôn

Quan trọng code của bạn chạy lâu không? chứ tớ đã ngồi nghĩ mãi rồi! không có điều kiện nào khả thi bẻ gãy nhánh mà không bị bỏ sót trường hợp.... vì vậy nếu muốn quét hết trường hợp thì dùng thuật toán vét cạn mà ở đây dữ liệu cũng chưa phải là lớn lắm mà đã chạy mất cả ngày mới xong
 
Upvote 0
Bạn huuthang_bd có facebook không tôi hỏi chút ... vì trong code có nhiều đoạn không hiểu hết :) tôi cũng mới học lập trình.

Muốn hỏi gì sao bạn không hỏi ở đây luôn. Phương pháp đệ quy hơi trừu tượng. Muốn giải thích cho rõ ràng cũng không dễ.
 
Upvote 0
Đúng thật là trừu tượng! chạy code phân tích mà chả hiểu gì luôn :(

Bạn giải thích giúp mình cách tìm cột thỏa mãn điều kiện nào thì bỏ bớt được không?
 
Lần chỉnh sửa cuối:
Upvote 0
:) Nếu số trường hợp tìm thấy lớn hơn số cột hiện có thì giảm số cột có đi 1 giá trị.

(nghĩa là số cột tối thiểu sẽ giảm đi 1 >> Cứ như vậy..... cho đến khi số trường hợp ít hơn số cột tối thiểu thì dừng)...

Khi số cột của bạn tìm thấy là 4 thì vòng lặp 4 cột cho 26 >>> nhanh
chứ số vòng lặp 14 cho 65 thì không nhanh đc.

Quay về cách xét xem cột nào không thỏa mãn thì bỏ không bao giờ xét đến nó nữa >>> chắc sẽ cải thiện hơn về tốc độ...
 
Upvote 0
:) Nếu số trường hợp tìm thấy lớn hơn số cột hiện có thì giảm số cột có đi 1 giá trị.

(nghĩa là số cột tối thiểu sẽ giảm đi 1 >> Cứ như vậy..... cho đến khi số trường hợp ít hơn số cột tối thiểu thì dừng)...

Khi số cột của bạn tìm thấy là 4 thì vòng lặp 4 cột cho 26 >>> nhanh
chứ số vòng lặp 14 cho 65 thì không nhanh đc.

Quay về cách xét xem cột nào không thỏa mãn thì bỏ không bao giờ xét đến nó nữa >>> chắc sẽ cải thiện hơn về tốc độ...
Bạn làm đi tôi học hỏi --=0
Theo bạn cột như thế nào là không thỏa mãn và có thể bỏ không xét nữa??? Một cột không thỏa mãn ở nhóm cột này nhưng ghép với các cột khác để có kết quả.
 
Upvote 0
Dùng thuật toán vét cạn để xử lý. (Đáp án là 14 cột)
Nhưng phải áp dụng điều kiện để bẻ gãy các nhánh (nhằm bỏ qua các trường hợp thừa).

Cái này như lập trình giải thuật giải Sudoku... nhưng khó hơn. Tôi post lên để mọi người giúp làm sao bẻ gãy các nhánh không cần thiết .... (Nếu như chạy bo thì chắc phải mất cả ngày mới xong).....

Chính vì quá lâu nên mong mọi người giúp .....

Có code rui, sao bạn không post lên mọi người xem sửa cho, đã đi nhờ lại muốn làm từ A..Z chăng, hơn nữa để mọi người xem cóp phát triển được ý tưởng của bạn

Thấy bạn nói về vét cạn chứng tỏ biết lập trình rùi , vậy tôi chỉ góp ý tưởng sơ khai cải thiện tốc độ nhanh ở đây thôi, bạn phải tự làm tiếp và rồi post kết quả lên đây.

trong file của bạn post ở bài 1,
(1)
- Đặt công thức sau
Mã:
=IF(COLUMN(A:A)>$BN2,"",LARGE(INDEX($A2:$BM2*COLUMN($A2:$BM2),0),$BN2+1-COLUMN(A:A)))
tại BP2,
- Copy công thức trên cho toàn vùng BP2:BU60

- Nhìn vào vùng BP2:BU60 sẽ hiểu, giờ ta cần lặp đêquy hay vét cạn như thế nào cho ít nhất số lặp, và lưu ý cột nào đã xét thì các dòng mà trên cột đó chứa 1 thì sẽ không cần xét nữa, ...

(2) thêm chút cho phần tăng sự nhận biết

tại A63 nhập công thức sau
Mã:
=IF(ROW(1:1)>A$61,"",LARGE(INDEX(A$2:A$60*ROW(A$2:A$60),0),A$61+1-ROW(1:1)))

copy công thức cho toàn vùng A63:BM70 --> các con số gì đây?



Qua (1) và (2) trên sẽ hiểu nên lập trình sao cho quét ít nhất, như thế giúp chặn các nhánh tốt , ngoài ra thì như ý bạn, là khi tìm được số cột - nếu so với min số cột hiện thời mà bằng hoặc lớn hơn (vẫn chưa ra kết quả)-- thì lùi lại chọn cột khác, Cứ vậy là xong

(*) vậy bạn thử triển khai code theo ý tưởng đó , xem có nhanh hơn không, và up kết quả cuối cho tất cả cùng tham khảo, cũng như cần hỏi gì cứ hỏi tiếp ở đây
 
Upvote 0
Sub RunMe()

Dim ArrGoc, ArrPhu As Variant
Dim I, J, K As Long
Dim iMin, rW, rWs, IndexRw, Col As Long


ArrGoc = Sheet3.[A2:Z20].Value
iMin = 4 'Xac dinh min tu dau

ReDim ArrPhu(1 To iMin)


For I = 1 To iMin
ArrPhu(I) = 0
Next I


rW = 0
Col = 0
IndexRw = 1

Do
rW = rW + IndexRw
If rW < iMin Then
If rW = 0 Then Exit Sub
ThoatCol:
ArrPhu(rW) = ArrPhu(rW) + 1
If ArrPhu(rW) <> UBound(ArrGoc, 2) Then
For Col = 1 To rW - 1
If ArrPhu(Col) = ArrPhu(rW) Then GoTo ThoatCol
Next Col
IndexRw = 1
GoTo Thoat
ElseIf ArrGoc(rW, ArrPhu(rW)) = 0 And ArrPhu(rW) <> UBound(ArrGoc, 2) Then
GoTo ThoatCol
ElseIf ArrPhu(rW) = UBound(ArrGoc, 2) Then
IndexRw = -1
ArrPhu(rW) = 0
GoTo Thoat
End If

Else
ThoatCol1:
ArrPhu(rW) = ArrPhu(rW) + 1
If ArrPhu(rW) <> UBound(ArrGoc, 2) Then
For rWs = 1 To UBound(ArrGoc)
s = ""
For Col = 1 To UBound(ArrPhu)
s = s & ArrGoc(rWs, ArrPhu(Col))
Next Col

If Len(s) = 0 Then GoTo ThoatCol1
If rWs = UBound(ArrGoc) Then
Sheet3.[AI100].End(3).Offset(1).Resize(, iMin) = ArrPhu
GoTo ThoatCol1
End If
Next rWs

ElseIf ArrPhu(rW) = UBound(ArrGoc, 2) Then
IndexRw = -1
ArrPhu(rW) = 0
GoTo Thoat
End If
End If

Thoat:
Loop Until rW = 0


End Sub

Nói ra thì ngại quá... Code này của tôi là chạy tự dò tay giá trị iMin.... và chưa khử hết kq trùng như của bạn huuthang_bd

Tôi mới tìm hiểu code thôi nên tư duy lập trình còn kém ...

Arr phụ sẽ có iMin (tự đặt) phần tử! và với mỗi phần tử thì theo dõi Dòng nó chạy đến đâu, THeo tư duy của tôi thì nếu nó chạy hết các dòng đều có giá trị 1 >>> thì các dòng đầu phải thỏa mãn đk đó đã! nên thay phần tử vào nếu gãy >>> goto Thoat cho gãy nhánh (không tìm nữa) và tìm nhánh khác. Nếu chạy max của dòng đó rồi thì lùi 1 dòng và tăng giá trị đứng trước lên 1 rồi quét tiếp.

Chưa tìm đc điều kiện để bẻ gãy thêm các nhánh thừa vì vậy nếu iMin ko phù hợp thì tăng iMin lên.... (Chưa tự động được)

Mong mọi người chỉ bảo thêm
 
Lần chỉnh sửa cuối:
Upvote 0
Code của tôi là code dùng vòng lặp nên chạy cả ngày mới xong nên đưa lên anh chị em cười chết ... :(

Kết quả: [TABLE="width: 546"]
[TR]
[TD="width: 39, align: right"]14[/TD]
[TD="width: 39, align: right"]15[/TD]
[TD="width: 39, align: right"]1[/TD]
[TD="width: 39, align: right"]29[/TD]
[TD="width: 39, align: right"]6[/TD]
[TD="width: 39, align: right"]49[/TD]
[TD="width: 39, align: right"]50[/TD]
[TD="width: 39, align: right"]21[/TD]
[TD="width: 39, align: right"]10[/TD]
[TD="width: 39, align: right"]36[/TD]
[TD="width: 39, align: right"]12[/TD]
[TD="width: 39, align: right"]13[/TD]
[TD="width: 39, align: right"]39[/TD]
[TD="width: 39, align: right"]57[/TD]
[/TR]
[/TABLE]

Đây chỉ là 1 KQ thôi! chưa lấy được hết KQ như code của bạn @huuthang_bd

Chạy ra đc 1kq đã oải quá rồi nên stop lại ... :(
Kết quả này có đúng không bạn ?
Sao mình thấy cả đống dòng đâu có dữ liệu, các dòng 2, 3, 5, 10, 14, 22, 32, 34......
Hay chắc chưa hiểu đề bài.
Híc+-+-+-++-+-+-++-+-+-+ mà khó hiểu thật
 
Upvote 0
Xin lỗi mọi người! Vì xét thử đổi thứ tự cột nên lấy cột bị thay rồi mà quên mất up lên là dữ liệu cũ! ... mình post lại kết quả:

KQ: 1-5-8-13-14-15-16-21-29-36-39-50-51-58
 
Upvote 0
Xin lỗi mọi người! Vì xét thử đổi thứ tự cột nên lấy cột bị thay rồi mà quên mất up lên là dữ liệu cũ! ... mình post lại kết quả:

KQ: 1-5-8-13-14-15-16-21-29-36-39-50-51-58
cũng còn nhiều dòng không có dữ liệu: dòng [TABLE="width: 225"]
[TR]
[TD="class: xl65, width: 18"]4[/TD]
[TD="class: xl65, width: 18"]6[/TD]
[TD="class: xl65, width: 27"]21[/TD]
[TD="class: xl65, width: 27"]37[/TD]
[TD="class: xl65, width: 27"]41[/TD]
[TD="class: xl65, width: 27"]53[/TD]
[TD="class: xl65, width: 27"]54[/TD]
[TD="class: xl65, width: 27"]57[/TD]
[TD="class: xl65, width: 27"]58[/TD]
[/TR]
[/TABLE]
 
Lần chỉnh sửa cuối:
Upvote 0
Mọi người xem file này nhé! ... Mình đã + từng dòng rồi
 

File đính kèm

Upvote 0
Chắc từ kết quả suy ngược ra dữ liệu --=0

Không bạn nhé! ... nếu vậy thì không dám đưa lên đây để múa rìu qua mắt các thợ ....

Bài này là tôi làm để tìm ít giá trị nhất ở link này....

Tôi xuất ra theo dạng ma trận để dễ xử lý. Kết quả 14 đã được bạn gtri tìm ra nhưng không đưa code lên.

Số cột ứng với giá trị của cột tính tương ứng với dòng có giá trị của cột hay không ở bên

http://www.giaiphapexcel.com/forum/...-hợp-các-giá-trị-duy-nhất&p=588557#post588557

Bạn có thể kiểm tra dữ liệu theo file đính kèm.... không lại nói tôi bịa ra dữ liệu với kết quả.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Đây là hướng mình làm để tìm ra phương pháp của bạn gtri

http://www.giaiphapexcel.com/forum/...-hợp-các-giá-trị-duy-nhất&p=588557#post588557

Mình xuất từng giá trị và tính theo từng dòng có là 1, ko có là trống để tạo ra ma trận giải quyết. Còn kết quả ứng với cột thì nó đã có cách đây 2 năm rồi. (Ma trận tôi chỉ bỏ các cột ít hơn 3)

Hoàn toàn không bịa đặt cái này...
 
Lần chỉnh sửa cuối:
Upvote 0
Đây là hướng mình làm để tìm ra phương pháp của bạn gtri

http://www.giaiphapexcel.com/forum/...-hợp-các-giá-trị-duy-nhất&p=588557#post588557

Mình xuất từng giá trị và tính theo từng dòng có là 1, ko có là trống để tạo ra ma trận giải quyết. Còn kết quả ứng với cột thì nó đã có cách đây 2 năm rồi. (Ma trận tôi chỉ bỏ các cột ít hơn 3)

Hoàn toàn không bịa đặt cái này...
Ủa. Tưởng kết quả bạn mới tìm được từ code của bạn chứ.
Code của tôi là code dùng vòng lặp nên chạy cả ngày mới xong nên đưa lên anh chị em cười chết ... :(

Kết quả: [TABLE="width: 546"]
[TR]
[TD="align: right"]14[/TD]
[TD="width: 39, align: right"]15[/TD]
[TD="width: 39, align: right"]1[/TD]
[TD="width: 39, align: right"]29[/TD]
[TD="width: 39, align: right"]6[/TD]
[TD="width: 39, align: right"]49[/TD]
[TD="width: 39, align: right"]50[/TD]
[TD="width: 39, align: right"]21[/TD]
[TD="width: 39, align: right"]10[/TD]
[TD="width: 39, align: right"]36[/TD]
[TD="width: 39, align: right"]12[/TD]
[TD="width: 39, align: right"]13[/TD]
[TD="width: 39, align: right"]39[/TD]
[TD="width: 39, align: right"]57[/TD]
[/TR]
[/TABLE]

Đây chỉ là 1 KQ thôi! chưa lấy được hết KQ như code của bạn @huuthang_bd

Chạy ra đc 1kq đã oải quá rồi nên stop lại ... :(
Đây là tất cả các kết quả có ít cột nhất của file ở bài 25
[TABLE="width: 392"]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]22[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]26[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]42[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]43[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]50[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]54[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[TD="align: right"]66[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]33[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]36[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]55[/TD]
[TD="align: right"]58[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]55[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]16[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]23[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]51[/TD]
[TD="align: right"]54[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]16[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]23[/TD]
[TD="align: right"]36[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]51[/TD]
[TD="align: right"]55[/TD]
[TD="align: right"]58[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]16[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]36[/TD]
[TD="align: right"]39[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]51[/TD]
[TD="align: right"]55[/TD]
[TD="align: right"]58[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]9[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]17[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]28[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]43[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]60[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]14[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]16[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]36[/TD]
[TD="align: right"]39[/TD]
[TD="align: right"]50[/TD]
[TD="align: right"]51[/TD]
[TD="align: right"]58[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]14[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]16[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]39[/TD]
[TD="align: right"]50[/TD]
[TD="align: right"]51[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD="align: right"]3[/TD]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]10[/TD]
[TD="align: right"]16[/TD]
[TD="align: right"]20[/TD]
[TD="align: right"]23[/TD]
[TD="align: right"]29[/TD]
[TD="align: right"]34[/TD]
[TD="align: right"]35[/TD]
[TD="align: right"]54[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]11[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]33[/TD]
[TD="align: right"]36[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]41[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]58
[/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]11[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]33[/TD]
[TD="align: right"]36[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]48[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]66[/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]11[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]33[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]41[/TD]
[TD="align: right"]47[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]11[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]33[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]48[/TD]
[TD="align: right"]58[/TD]
[TD="align: right"]59[/TD]
[TD="align: right"]66[/TD]
[/TR]
[TR]
[TD="align: right"]6[/TD]
[TD="align: right"]8[/TD]
[TD="align: right"]11[/TD]
[TD="align: right"]12[/TD]
[TD="align: right"]13[/TD]
[TD="align: right"]15[/TD]
[TD="align: right"]17[/TD]
[TD="align: right"]21[/TD]
[TD="align: right"]22[/TD]
[TD="align: right"]27[/TD]
[TD="align: right"]37[/TD]
[TD="align: right"]43[/TD]
[TD="align: right"]48[/TD]
[TD="align: right"]58[/TD]
[/TR]
[/TABLE]
 
Lần chỉnh sửa cuối:
Upvote 0
Chạy ra hết KQ của bạn mất bao nhiêu lâu vậy bạn?
 
Upvote 0
Không bạn nhé! ... nếu vậy thì không dám đưa lên đây để múa rìu qua mắt các thợ ....

Bài này là tôi làm để tìm ít giá trị nhất ở link này....

Tôi xuất ra theo dạng ma trận để dễ xử lý. Kết quả 14 đã được bạn gtri tìm ra nhưng không đưa code lên.

Số cột ứng với giá trị của cột tính tương ứng với dòng có giá trị của cột hay không ở bên

http://www.giaiphapexcel.com/forum/...-hợp-các-giá-trị-duy-nhất&p=588557#post588557

Bạn có thể kiểm tra dữ liệu theo file đính kèm.... không lại nói tôi bịa ra dữ liệu với kết quả.

vậy bài toán này không phải của bạn? vét cạn, code bạn cũng không hiểu nhiều?

xin cho hỏi bài này bạn ứng dụng vào đâu việc gì thực tế, và vấn đề gốc là gì -- có khi sau khi nói có giải pháp khác hay hơn nhiều. tiêu đề không hợp với nội dung vì tìm đường đi ngắn nhất nhưng không có đường nào trong nội dung ?

phải chăng là bạn tự nghĩ ra bài toán để mọi người lao vào làm, như thế thật phí thời gian.

Nếu là bài toán của chính bạn thì xem bài 19 sẽ giúp ích bạn nhiều khi lập trình: http://www.giaiphapexcel.com/forum/...án-tìm-đoạn-ít-đường-nhất&p=723571#post723571
 
Upvote 0
Cảm ơn bạn malang!

Đây không phải bài toán của tôi! và thật sự tôi chưa biết nhiều lắm về lập trình!
Nhưng chủ đề của bài cũ link ở trên tôi đã quan tâm rất lâu vì nó giúp ích cho tôi rất nhiều.
Tôi đã comments ở đây http://www.giaiphapexcel.com/forum/...-hợp-các-giá-trị-duy-nhất&p=640630#post640630 Cách đây hơn 1 năm. Do tôi ko biết nhiều về lập trình nên đến hiện tại vẫn chưa giải quyết được bài toán này chứ không phải là đưa lên để đánh đố hay nhờ mọi người lao vào làm....

Sáng đến giờ tôi cũng đang ngồi xem các dòng và cột công thức của bạn hướng dẫn ... nhưng vẫn chưa tìm được hướng. Thật sự năng lực có hạn nên bạn thông cảm.
 
Upvote 0
Cảm ơn bạn malang!

Đây không phải bài toán của tôi! và thật sự tôi chưa biết nhiều lắm về lập trình!
Nhưng chủ đề của bài cũ link ở trên tôi đã quan tâm rất lâu vì nó giúp ích cho tôi rất nhiều.
Tôi đã comments ở đây http://www.giaiphapexcel.com/forum/...-hợp-các-giá-trị-duy-nhất&p=640630#post640630 Cách đây hơn 1 năm. Do tôi ko biết nhiều về lập trình nên đến hiện tại vẫn chưa giải quyết được bài toán này chứ không phải là đưa lên để đánh đố hay nhờ mọi người lao vào làm....

Sáng đến giờ tôi cũng đang ngồi xem các dòng và cột công thức của bạn hướng dẫn ... nhưng vẫn chưa tìm được hướng. Thật sự năng lực có hạn nên bạn thông cảm.

Nếu không bài toán của bạn thì khuyên bạn xa nó ra vì thuộc bài toán khó (khó hơn khi bạn chưa biết code)

Nếu là "vì nó giúp ích cho tôi rất nhiều." thì bạn hãy viết ra đây rõ giúp cái gì cho bạn trong thực tế nhé

Nếu có ích nhiều cho bạn và bạn lại không hiểu code, thuật toán (ví như vét cạn) thì tốt nhất chuyển sang giải pháp solver của Excel nhé, nhanh và tìm được tối ưu

tuy vậy, tôi sẽ không tiếp tục nếu không biết rõ mục đích thực tế là ứng dụng việc chi?

 
Upvote 0
Máy của tôi chỉ hiện ra các đoạn ký tự:


Sub CallMe(): Dim l_I_l_I_l_l_I_I_l_I_l, l_I_l_I_I_I_l_l_I_l_I_I_l_I() As Long , l_I_l_l_I_I_l_I_l_l_I() As Long, l_I_l_I_l_I_I_l_I_l_l_l_l_I As Long, l_l_l_l_l_l_l_I_l_l_I_l_l_l() As Long, l_l_I_I_I_I_I_l_l_I_I_l_l_I(), l_l_I_I_I_I_I_I_l_I_l_l_l As Double: l_l_I_I_I_I_I_I_l_I_l_l_l = Time

khi chạy Macro CallMe thì cũng đứng yên không hoạt động gì cả bạn ạ! Test kiểu gì bây giờ :(
 
Upvote 0
Máy của tôi chỉ hiện ra các đoạn ký tự:


Sub CallMe(): Dim l_I_l_I_l_l_I_I_l_I_l, l_I_l_I_I_I_l_l_I_l_I_I_l_I() As Long , l_I_l_l_I_I_l_I_l_l_I() As Long, l_I_l_I_l_I_I_l_I_l_l_l_l_I As Long, l_l_l_l_l_l_l_I_l_l_I_l_l_l() As Long, l_l_I_I_I_I_I_l_l_I_I_l_l_I(), l_l_I_I_I_I_I_I_l_I_l_l_l As Double: l_l_I_I_I_I_I_I_l_I_l_l_l = Time

khi chạy Macro CallMe thì cũng đứng yên không hoạt động gì cả bạn ạ! Test kiểu gì bây giờ :(
bạn chờ vài phút mới ra kết quả
 
Upvote 0
cảm ơn bạn! sau 12 phút nó đã xuất kq :) chưa bao giờ thấy chạy code mà vẫn thao tác đc trên sheet ngon lành >>> nên tớ mới hỏi/
 
Upvote 0
Sử dụng tập tin bài #1, Lên thuyền ra sông vét hết cá tầng trên mặt nước, sém lật thuyền, may nhờ các bạn Let'GâuGâu, Ba Tê, HungQuoc49 và Doveandrose ra tay cứu giúp, cám ơn các bạn. Tính vét luôn tầng đáy nhưng phần vì muốn bảo vệ môi trường và không biết còn cá hay không, phần vì sông sâu nước lạnh nên đành ngưng lại
Code gồm 3 Sub chấp lại, trong đó có 1 Sub của bạn Doveandrose. Tính vá 3 Sub lại nhưng thôi và để vậy cho nó đặc biệt vì không giống ai
 

File đính kèm

Upvote 0
Sử dụng tập tin bài #1, Lên thuyền ra sông vét hết cá tầng trên mặt nước, sém lật thuyền, may nhờ các bạn Let'GâuGâu, Ba Tê, HungQuoc49 và Doveandrose ra tay cứu giúp, cám ơn các bạn. Tính vét luôn tầng đáy nhưng phần vì muốn bảo vệ môi trường và không biết còn cá hay không, phần vì sông sâu nước lạnh nên đành ngưng lại
Code gồm 3 Sub chấp lại, trong đó có 1 Sub của bạn Doveandrose. Tính vá 3 Sub lại nhưng thôi và để vậy cho nó đặc biệt vì không giống ai
Chắc bạn phải vét thêm --=0. Dữ liệu bài 1 kết quả có ít cột nhất là 14.
Ngoài ra khi bỏ dữ liệu khác vào thì lại bị lỗi.
 
Upvote 0
Cảm ơn mọi người!

Phần xử lý của bạn HieuCD là quay về bài toán gốc.

Dữ liệu của nó là dạng

[TABLE="width: 186"]
[TR]
[TD]m1[/TD]
[TD]u1[/TD]
[TD]p2[/TD]
[TD]c3[/TD]
[TD]x3[/TD]
[TD]d[/TD]
[/TR]
[TR]
[TD]m3[/TD]
[TD]q2[/TD]
[TD]r1[/TD]
[TD]b3[/TD]
[TD]b[/TD]
[TD]l1[/TD]
[/TR]
[TR]
[TD]d2[/TD]
[TD]j1[/TD]
[TD]a2[/TD]
[TD]c2[/TD]
[TD]e1[/TD]
[TD]l[/TD]
[/TR]
[TR]
[TD]t1[/TD]
[TD]g3[/TD]
[TD]m1[/TD]
[TD]c2[/TD]
[TD]n[/TD]
[TD]a1[/TD]
[/TR]
[TR]
[TD]u3[/TD]
[TD]y3[/TD]
[TD]h1[/TD]
[TD]l1[/TD]
[TD]j1[/TD]
[TD]e3[/TD]
[/TR]
[TR]
[TD]y2[/TD]
[TD]l3[/TD]
[TD]s1[/TD]
[TD]d2[/TD]
[TD]o[/TD]
[TD]p[/TD]
[/TR]
[TR]
[TD]z2[/TD]
[TD]f[/TD]
[TD]c3[/TD]
[TD]a3[/TD]
[TD]y[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]z[/TD]
[TD]h2[/TD]
[TD]j1[/TD]
[TD]q[/TD]
[TD]d1[/TD]
[TD]b1[/TD]
[/TR]
[TR]
[TD]m3[/TD]
[TD]u3[/TD]
[TD]p1[/TD]
[TD]g3[/TD]
[TD]o1[/TD]
[TD]a1[/TD]
[/TR]
[TR]
[TD]j1[/TD]
[TD]f3[/TD]
[TD]p[/TD]
[TD]h[/TD]
[TD]q[/TD]
[TD]y1[/TD]
[/TR]
[TR]
[TD]....[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[/TABLE]

Khi đó sẽ có bảng đếm từng ký tự và xử lý bên cạnh ....

Tôi vừa copy dữ liệu trong file của bạn và chạy trên code của bạn huuthang_bd thì đúng là 14 cột!

Một lần nữa cảm ơn mọi người.
 
Upvote 0
Cảm ơn bạn huuthang_bd.

Mình chạy thử code của bạn áp dụng ở bài 25 thì mất có hơn 2 phút thôi.

nhưng khi đưa thêm cột dữ liệu vào. (lên 83 cột) thì không thấy Finish. (40 phút rồi ko thấy ok)....

Để nghiên cứu thêm xem sao ...
 

File đính kèm

Upvote 0
Cảm ơn bạn huuthang_bd.

Mình chạy thử code của bạn áp dụng ở bài 25 thì mất có hơn 2 phút thôi.

nhưng khi đưa thêm cột dữ liệu vào. (lên 83 cột) thì không thấy Finish. (40 phút rồi ko thấy ok)....

Để nghiên cứu thêm xem sao ...
Bạn cứ thử tính số trường hợp cần kiểm tra thì sẽ hiểu ngay vì sau lâu như vậy.
Tôi ký hiệu C(k,n) là tổ hợp chập k của n phần tử.
Đối với bài toán của bạn. Nếu có n cột thì số trường hợp là C(1,n) + C(2,n) + ... + C(n-1,n) + C(n,n)
65 cột số trường hợp là hơn 36*10^18 (36 tỷ tỷ)
83 cột số trường hợp là hơn 9*10^24 (9 triệu tỷ tỷ)
-------------
Nếu bạn thấy sốt ruột thì mỗi lần tìm được kết quả thì gán xuống sheet mà xem. Code như file đính kèm (Code có cải tiến so với trước).
 

File đính kèm

Upvote 0
Thanks bạn nhiều :) thảo nào 1 tiếng 42 phút mới xong (File cũ) file mới... khuya rồi ko test luôn file mới! Dù sao cũng cảm ơn bạn rất nhiều
 
Upvote 0
Kết quả của bạn liệu có ổn không? Tổng các dòng của cột chọn vẫn có <1 kìa (xem hình). Không biết mình có hiểu sai không.
 

File đính kèm

  • 2016-06-19_073102.jpg
    2016-06-19_073102.jpg
    18.1 KB · Đọc: 66
Upvote 0
Chắc do bạn nhầm thôi! File bạn huuthang_bd ok rồi mà
 
Upvote 0
Bạn #huuthang_bd có thể giúp mình chỉnh lại 1 chút thế này được không?
Trước là tất cả phải > hoặc =1
nhưng giờ thì chấp nhận cả 0 nhưng >>> không được liên tục 4 lần thì

Ví dụ:
1
0
0
0
1
và vẫn xuất ra các tổ hợp thỏa mãn như trước.

Cảm ơn bạn rất nhiều.
 
Upvote 0
Bạn #huuthang_bd có thể giúp mình chỉnh lại 1 chút thế này được không?
Trước là tất cả phải > hoặc =1
nhưng giờ thì chấp nhận cả 0 nhưng >>> không được liên tục 4 lần thì

Ví dụ:
1
0
0
0
1
và vẫn xuất ra các tổ hợp thỏa mãn như trước.

Cảm ơn bạn rất nhiều.

Cái này không phải một chút mà là một bài toán mới hoàn toàn :)
 
Upvote 0
Vì không hiểu code của bạn nên mình không thể sửa được.
Mình không có 1 chút tư duy lập trình nào nên ...
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom