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

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
Web KT

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

Back
Top Bottom