Xếp số tự nhiên theo từng hàng sao cho không trùng nhau

Liên hệ QC
Không hiểu bạn chèn kiểu chi,

Xem file gửi kèm, bấm nút RUN chạy CT
Tôi cũng làm được rồi cảm ơn bạn nha; Nhưng khi cập nhật thông tin mới(bằng cách xóa bớt dữ liệu): nếu còn lại ít hơn 30 mặt hàng; ít hơn 30 công ty thì nó báo lỗi Run time "1004"
VD: Nếu đồng thời ba cty1;2;3 không có mặt hàng nào thì nó báo lỗi lỗi
Hoặc Nếu đồng thời 23 cty8;9;10;...;30 không có mặt hàng nào thì nó cũng báo lỗi lỗi
Hay tại vùng dữ liệu ko hợp lệ;
Nhưng vùng nhập dữ liệu là phải phụ thuộc thực tế để nhập vào(linh động)
 
Lần chỉnh sửa cuối:
Tôi cũng làm được rồi cảm ơn bạn nha; Nhưng khi cập nhật thông tin mới(bằng cách xóa bớt dữ liệu): nếu còn lại ít hơn 30 mặt hàng; ít hơn 30 công ty thì nó báo lỗi Run time "1004"
VD: Nếu đồng thời ba cty1;2;3 không có mặt hàng nào thì nó báo lỗi lỗi
Hoặc Nếu đồng thời 23 cty8;9;10;...;30 không có mặt hàng nào thì nó cũng báo lỗi lỗi
Hay tại vùng dữ liệu ko hợp lệ;
Nhưng vùng nhập dữ liệu là phải phụ thuộc thực tế để nhập vào(linh động)

(Ơ hay, co con ga hỏi sao lại thành co lac lac trả lời hỏi lại vậy nhỉ???)

Ah, cái này chắc phải trong nội dung CODE, tôi chưa có đ/k đọc kỹ code của huuthang_bd

bài trên tôi chỉ thêm lệnh xóa kết quả cũ mà thui
 
(Ơ hay, co con ga hỏi sao lại thành co lac lac trả lời hỏi lại vậy nhỉ???)

Ah, cái này chắc phải trong nội dung CODE, tôi chưa có đ/k đọc kỹ code của huuthang_bd

bài trên tôi chỉ thêm lệnh xóa kết quả cũ mà thui
Thấy hay hay nên hai cò cùng bay vào í mà, bạn coi ng/ cứu giúp hai cò với
 
Thấy hay hay nên hai cò cùng bay vào í mà, bạn coi ng/ cứu giúp hai cò với


Sửa lại code của huuthang_bd - tối ưu hơn và đáp ứng các y.c mới của bạn đó - chạy nut RUN - ứng với sub Chiaqua

THêm 1 phương thức thuật toán chia mới hợp lý hơn (chia theo cách chọn cty nào có số lượng max ứng với loại quà đó thì được chọn chia trước) - thấy cách chia này số dư quà nhỏ hơn nhiều so với cách trên - chạy nut RUN 02 ứng với sub Chiaqua02

(tùy thích chọn phương án nào thì chọn)

thêm 1 nút Clear - để xóa kết quả cũ

lưu ý:
* Bảng số lượng bên sheet đầu tiên có đổi lại cấu trúc (hàng cột) cho thích hợp lập trình tránh nhầm lần hơn - bạn chú ý nhé

* mã số quà được đánh liên tục từ 1,2,... đến hết. các cty thì phải sắp xếp bên kết quả (sheet 2) và bên bảng số liệu (bảng số lượng quà) phải tương ứng vị trí thư tự như nhau

* Đã lập trình với Vị trí đặt bảng số lượng là ô G5 tại sheet1, vị trí kết quả tại A5 sheet 2, vị trí bảng thừa ở dưới CÁCH 30ng(dong)+3dong =33 dong tương ứng A38 sheet 2-- nếu thay đổi thì nhớ thay đổi trong code các địa chỉ cell G5 hay A5 nhé

xem trong file kèm
 

File đính kèm

  • ChiaQua2.rar
    19 KB · Đọc: 6
Lần chỉnh sửa cuối:
THêm 1 phương thức thuật toán chia mới hợp lý hơn (chia theo cách chọn cty nào có số lượng max ứng với loại quà đó thì được chọn chia trước) - thấy cách chia này số dư quà nhỏ hơn nhiều so với cách trên - chạy nut RUN 02 ứng với sub Chiaqua02

(tùy thích chọn phương án nào thì chọn)

thêm 1 nút Clear - để xóa kết quả
Cảm ơn bạn vodoi2x nếu được phương án này thì hay quá, chọn cty có quà nhiều nhất chia trước, số dư quà nhỏ,...; Bạn xem lại hình như bạn gửi nhầm File rồi thì phải
 
Đúng là tôi gửi nhầm file

Đã thay file kèm cho chính xác hơn
Xem lại bài #65 để down lại file nhé
 
Lần chỉnh sửa cuối:
Mỗi lần mở FIle là muốn cảm ơn, hay quá luôn

Giờ còn hay hơn nữa

Thêm thuật toán 3, với thuật toán THAM LAM người nhận tranh thủ nhận nhiều quà nhất có thể (vẫn xét nhân trước từ các công ty có max số lượng loại hàng đó) : người nhận sẽ xem xét thứ tự nhận quà sao số quà mình nhận là nhiều nhất

giờ lại chỉ có dư 11 quà mà thôi (tính tổng phần quà thừa sẽ thấy)

bấm nút RUN 03 để chạy sub Chiaqua03


vậy bạn có nhiều lựa chọn để chọn nhé


Các lưu ý vẫn giống lưu ý ở bài #65

tải file kèm mới này chiaqua3
 

File đính kèm

  • ChiaQua3.rar
    27.6 KB · Đọc: 7
Giờ còn hay hơn nữa

Thêm thuật toán 3, với thuật toán THAM LAM người nhận tranh thủ nhận nhiều quà nhất có thể (vẫn xét nhân trước từ các công ty có max số lượng loại hàng đó) : người nhận sẽ xem xét thứ tự nhận quà sao số quà mình nhận là nhiều nhất

giờ lại chỉ có dư 11 quà mà thôi (tính tổng phần quà thừa sẽ thấy)

bấm nút RUN 03 để chạy sub Chiaqua03


vậy bạn có nhiều lựa chọn để chọn nhé


Các lưu ý vẫn giống lưu ý ở bài #65

tải file kèm mới này chiaqua3
Cảm ơn vodoi2x Hiệu quả hơn trông thấy, số quà các quý cty mang về ít hơn, Thuật của bạn làm cho các bên (các mối quan hệ tốt hơn) chào nhau ra về không phải tay xách nách mang nữa rồi thật tuyệt, như bạn biết mỗi lần mang quà trả lại về là bao nhiêu phức tạp; giải trình tại sao ko có ai nhận vì hàng kém chất luọng, bao nhiêu là thắc mắc từ xếp.. hay sao...anh làm việc ko hết trách nhiệm ko vì hình ảnh của cty,..vv..., rồi phải nhập lại kho, thêm chứng từ nhập xuất, kiểm kê; sẽ có dịp gặp sẽ có các co liên quan cảm ơn và .........nếu có thuật toán hay hơn thì xin vodoi2x chia sẽ với nghe,xin chúc bạn sức khỏevodoi2x , chúc GPE luôn phát triển.
 
Đã tốt còn tốt hơn

Cảm ơn vodoi2x Hiệu quả hơn trông thấy, số quà các quý cty mang về ít hơn, Thuật của bạn làm cho các bên (các mối quan hệ tốt hơn) chào nhau ra về không phải tay xách nách mang nữa rồi thật tuyệt, như bạn biết mỗi lần mang quà trả lại về là bao nhiêu phức tạp; giải trình tại sao ko có ai nhận vì hàng kém chất luọng, bao nhiêu là thắc mắc từ xếp.. hay sao...anh làm việc ko hết trách nhiệm ko vì hình ảnh của cty,..vv..., rồi phải nhập lại kho, thêm chứng từ nhập xuất, kiểm kê; sẽ có dịp gặp sẽ có các co liên quan cảm ơn và .........nếu có thuật toán hay hơn thì xin vodoi2x chia sẽ với nghe,xin chúc bạn sức khỏevodoi2x , chúc GPE luôn phát triển.

Bạn không cần cám ơn, giúp cho hoạt động từ thiện tốt hơn là tôi mong muốn góp phần thiện cho đời, hy vọng có dịp hội ngộ

Giờ còn tối ưu với RUN 04

Nâng cấp thuật toán 03 trên với tạo ngẫu nhiên thứ tự nhận quà (thành nhiều phương án) và lựa chọn phương án tối ưu hơn

Dĩ nhiên thời gian chạy sẽ phải chờ 1 chút lâu hơn (song với bài toán hết thời cũng chưa đầy 1 phút là có kết quả)

việc nhanh hay chậm là do số lượng phương án chúng ta muốn xét , có thể điều chỉnh qua 2hằng số (Alt+F11 vào module RUN04 sẽ thấy trong đầu sub Chiaqua04):
Const TL0Max_nNguoi = 0.5 '' số phương án lớn để sumduQua nhỏ nhất
Const TL1Max_nQua = 5 '' số phương án để người nhận quà tham lam số quà nhiều nhất

Vì là NGẪU NHIÊN, nên mỗi lần chạy cho 1 kết quả khác nhau và số dư cũng khác nhau, song thường thấy nhỏ hơn nhiều các giải pháp trước

Tôi đã chạy thấy tối ưu tới mức chỉ có số dư quà là 4 --(trong đó soduToiThieu =2 vì quà 23 có số lượng =32>30 người tức dư 2 là chắc chắn)

Khi kết thúc chạy có hỏi đáp là muốn gán kết quả mới hay không (nếu không sẽ vẫn giữ kết quả cũ) -- MỤC đích bạn có thể bấm RUN04 nhiều lần để đạt tối ưu mong muốn

Chắc là Dùng RUN 04 là khá hay rui, nếu có gì các bạn cứ phản hồi

xem file kèm
tất nhiên mọi LƯU Ý vẫn như #65

-----------
Trong RUN04 có sử dụng sub Draw tạo dãy số ngẫu nhiên từ siwtom (có modify chút) tại đây , cảm ơn siwtom)
 

File đính kèm

  • ChiaQua4.rar
    35.5 KB · Đọc: 18
Lần chỉnh sửa cuối:
Mới update lại file mới
down load ở bài trên #71

nhờ các Min, MODs xóa hộ bài này sau thời gian tồn tại 5h
xin cảm ơn
 
Cảm ơn vodoi2x ! tôi tets RUN4 rồi kết quả tuyệt thật, cách giải quyết thông minh, vui ngất ngây , không biết các thành viên khác thử chưa, nghỉ sao
 
Lần chỉnh sửa cuối:
Cảm ơn vodoi2x ! tôi tets RUN4 rồi kết quả tuyệt thật, cách giải quyết thông minh, vui ngất ngây , không biết các thành viên khác thử chưa, nghỉ sao


Bạn test thấy tổng số quà dư (ứng với ví dụ file số hiện thời) là bao nhiêu?

như trên nói tôi test tổng quà số dư nhỏ nhất đạt 4

chắc dễ hiểu, bạn cứ chạy đi chạy lại RUN 4 (chỉ có khoảng 13 giây / lần chạy với máy LAP của tôi, chắc máy tính của bạn cũng dao động thời gian này không lâu) nếu đạt tổng số quà dư nhỏ hơn lần trước thì GÁN lại, trái lại không, cứ như vậy chắc vài lần là đạt số nhỏ nhất mong muốn (tất nhiên có trường hợp nếu tổng quà dư = đúng số dư quà tối thiểu - thì tốt quá --trong ví dụ này là =2, thực tế có trường hợp =0)

Nhờ Chương trình chúng ta có thể xử lý giải pháp quà dư

HOẶC sau khi có biết số dư, có thể thêm người nhận thì sẽ phân được hết thôi (vd như bài này là 2)

Hoặc là bớt quà đi, như số liệu trong file này bạn chỉ cần bớt đi số quà mã 23 của cty4 từ 7 xuống 5==> sẽ chia hết không có quà dư ==> báo với họ bớt lại 2 phần quà 23 này lại các quà dư này tốt nhất nên loại ngay từ đầu vì chắc chắn dư mà 32>30

Đó là các giải pháp hay giúp Công việc bạn tốt hơn

------------
TỪ câu hỏi này thấy là nếu bạn đặt câu hỏi bài toán 1 cái hợp lý và đầy đủ từ gốc thì sẽ giúp mọi thành viên giúp và tìm giải pháp hay và nhanh nhất --> bạn rút kinh nghiệm
 
Lần chỉnh sửa cuối:
Cảm ơn vodoi2x Tôi đã hiểu và rút kinh nghiệm khi tham gia GPE, về RUN4 tôi sử dụng được; cũng có lần chạy được kết quả như bạn mô tả; về mặt thời gian thì như thế là quá tốt. Vừa rôi tôi chạy thử với Bảng dữ liệu mới là: có 30 cty mỗi cty 30 quà(từ quà 1;2;3;...;đến quà 30) có dang sách 30 người nhận quà thì: RUN4 cho KQ dư 2 quà; hết 11s;Ok
------
RUN3 chạy 1 phát: KQ dư là 0 (ok)
Run 1 Run2 Kquả dư 56 (yếu)
 
Lần chỉnh sửa cuối:
Cảm ơn vodoi2x Tôi đã hiểu và rút kinh nghiệm khi tham gia GPE, về RUN4 tôi sử dụng được; cũng có lần chạy được kết quả như bạn mô tả; về mặt thời gian thì như thế là quá tốt. Vừa rôi tôi chạy thử với dữ liệu là: có 30 cty mỗi cty 30 quà(từ quà 1;2;3;...;đến quà 30) có dang sách 30 người nhận quà thì: RUN4 cho KQ dư 2 quà; hết 11s;Ok
------
RUN3 chạy 1 phát: KQ dư là 0

Thế tốt rùi,
dư 4 thực chất là dư 2 quà mà thôi, vì như đã nói quà 23 bị chắc chắn dư 2 (tổng số quà=32 >30 người)

Vì đây là thuật toán ngẫu nhiên, nên lưu ý mỗi lần chạy sẽ cho phương án mới thường khác phương án cũ và số dư quà cũng khác nhưng thường là nhỏ nhỏ hợp lý,
 
Em nhờ các anh chị xem giúp<br>
Với thuật toán chia quà vẫn như trên, nếu em muốn một số khách hàng ko được phép nhận quà của một số cty (ví dụ anh A5, A10, A15; A20; A21; ko đc nhận quà của cty1,2,3,4,28,29,30) phần ràng buộc ko cho khách hàng nhận quà này em lập thành một bảng phụ tương tự (mẫu biểu) bảng kết quả ở Sheet2; ở dòng k/hàng các khách hàng ko đc nhận em đánh dấu x vậy thì khi sắp xếp khách hàng nào có dấu x ứng với cty nào thì để trống cell đó.Có nghĩa giao điểm của dòng khách hàng với cột cty sẽ để trống ko phát quà. em có kèm File mong anh chị giúp, thông cảm cho em kẻ tham lam nhiều chuyện
 
Lần chỉnh sửa cuối:
Em nhờ các anh chị xem giúp<br>
Với thuật toán chia quà vẫn như trên, nếu em muốn một số khách hàng ko được phép nhận quà của một số cty (ví dụ anh A5, A10, A15; A20; A21; ko đc nhận quà của cty1,2,3,4,28,29,30) phần ràng buộc ko cho khách hàng nhận quà này em lập thành một bảng phụ tương tự (mẫu biểu) bảng kết quả ở Sheet2; ở dòng k/hàng các khách hàng ko đc nhận em đánh dấu x vậy thì khi sắp xếp khách hàng nào có dấu x ứng với cty nào thì để trống cell đó.Có nghĩa giao điểm của dòng khách hàng với cột cty sẽ để trống ko phát quà. em có kèm File mong anh chị giúp, thông cảm cho em kẻ tham lam nhiều chuyện

Lạ nhỉ , sao sao lại phân biệt đối xử thế, phân biệt người không được nhận quà từ 1 số công ty vây??? (từ thiện?)

Y.c này có thể xét được,
 
Cảm ơn vodoi2x giúp coconga với nhé; Vì trước đó ccác cty có phát riêng cho một số người thuộc một chương trình khác, lắm chuyện quá em xin lỗi anh chị nhe, Cảm ơn anh chị, cảm ơn GPE
 
Cảm ơn vodoi2x giúp coconga với nhé; Vì trước đó ccác cty có phát riêng cho một số người thuộc một chương trình khác, lắm chuyện quá em xin lỗi anh chị nhe, Cảm ơn anh chị, cảm ơn GPE

Đây là file bạn cần
(thêm lưu ý: bảng đánh dấu X phải có cấu trúc giống hệt bảng kết quả ở sheet2 đó)

THêm RUN 05 kết hợp thuật toán 03 04 -- nhằm mục đích chạy nhanh hơn trong trường hợp đặc biệt như ví dụ bạn đưa ra (tất cả đều số lượng quà từ các công ty=1 và trong trường hợp KHÔNG CÓ X nào - khi này 03 chạy đẹp nhanh nhất - nên đã kết hợp 03 04 thành 05 cho hợp lý)


Túm lại sử dụng cái RUN nào người dùng quyết định hợp lý với số liệu của mình - song RUN05 là tổng quát nhất

hy vọng đáp ứng các yêu cầu
 

File đính kèm

  • ChiaQua5x.rar
    37.9 KB · Đọc: 16
Web KT

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

Back
Top Bottom