Tôi lấy cột C mô tả thêm như sau(có giải thích trong file)Trông có vẻ như phải dùng thuật toán vét cạn.
Mà thuật toán vét cạn thì viết mất công lắm. Chỉ khi nào tôi hiểu 100% đề bài thì tôi mới chịu khó viết code, viết sửa đi sửa lại hoài tôi lười lắm.
Tôi lấy cột C mô tả thêm như sau(có giải thích trong file)
Công ty2( có 26 suất quà trong đó: loại 3 (có 4 suất); loại 5 (có 1 suất); loại 6 (có 2 suất); ...Trong 26 suất này thì (Nguyễn văn A1) được nhận 1 suất ngẫu nhiên không trùng lắp với món quà mà anh (Nguyễn văn A1) đã nhận của các công ty: công ty 2;công ty 3;công ty 4;....công ty 14/ Như vậy anh sẽ nhận được 14 món quà khác nhau từ 14 tổ chức trên/ Khi phát theo nguyên tắc phát lần lượt theo thứ tự cho đến khi hết 26 suất(A1>A2>A3>A4>A5>......>A27>A28(Nguyen van A27 KHÔNG ĐƯỢC NHẬN QUÀ CỦA 4 CTY1234;Nguyen van A28 KHÔNG ĐƯỢC NHẬN QUÀ CỦA CTY123456789;10;11) VÌ HẾT QUÀ.
Tôi có nói rõ ứng dụng thực tế của Bài toán này bên trang 3 #22 trên/ Mong bạn quan tam xem giúp./.Nếu không lầm thì số trường hợp có thể xảy ra trong quá trình sắp xếp là:
Tích X[SUB]i[/SUB]! với i=1-n Trong đó:
X[SUB]i[/SUB] là số số liệu của cột thứ i
Và trong mỗi phép thử từng trường hợp sẽ tìm ra kết quả theo yêu cầu của bạn là không có số trùng nhau của mỗi hàng. (có thể có nhiều kết quả)
-> Nếu sử dụng phương pháp tìm kiếm theo chiều sâu hoặc rộng cũng khá mất công
Vậy thực tế ứng dụng của bạn đối với file dữ liệu này là gì, có chăng GPE sẽ đưa ra giải pháp tốt hơn.
Tôi có nói rõ ứng dụng thực tế của Bài toán này bên trang 3 #22 trên/ Mong bạn quan tam xem giúp./.
* góp ý về thuật toán: sao bạn không nghĩ NGƯỢC LẠI là chia thành các "túi quà" (bao gồm nhiều quà từ các công ty) sao cho "túi quà" chứa các quà khôgn trùng nhau: xem được bao nhiêu gói (tất nhiên tuỳ số lượng quà trong 1 túi - bạn phải xác định là chia đều hay không đều) ==> rui khi đó mới chia các "gói quà" cho danh sách (1 cách tuần tự hay ngẫu nhiên)
Nói cách khác là chia quà thành các túi THAY vì cho người xí tranh chấp rồi đổi tới lui cho mệt
tôi đọc qua các bài của các cao thủ thì thấy là để giải quyết vấn đề này (chỉ xét thuật toán, ko xét mục đích sử dụng) là không có hướng giải.
vì vậy chắc tác giải nên tìm hướng đi khác, đổi phương pháp chia quà như anh Vodoi2X hướng dẫn
cám ơn các anh em, tôi chỉ tò mò về thuật toán
tôi đọc qua các bài của các cao thủ thì thấy là để giải quyết vấn đề này (chỉ xét thuật toán, ko xét mục đích sử dụng) là không có hướng giải.
vì vậy chắc tác giải nên tìm hướng đi khác, đổi phương pháp chia quà như anh Vodoi2X hướng dẫn
cám ơn các anh em, tôi chỉ tò mò về thuật toán
hiii, hiii, có gì đâu bạn,
quan trọng cách tác giả hỏi thui,
Nghe chừng đây là bài toán người hỏi muốn làm gì đó bí hiểm, nên cách mô tả không có căn cứ để mô tả HOẶC ngưởi hỏi chưa tìm cách đặt vấn đề bài toán tốt
Còn thuật toán thì dù ngay như đầu đổi chỗ cũng có thể làm, nhưng có cần to chuyện thế không khi mà
Tự dưng chia đại quà ra cho mọi người, rồi lại đổi lại nhau để tìm túi quà có món quà khác nhau (ở đây túi quà được hiểu quà của 1 người nhận)
Và như sealand đã nói trên thì : số quà, số công ty cũng không được người hỏi đề ra rõ ràng (trong file vẫn chấm chấm ... loạn lên)
------> túm lại là có lẽ người hỏi không giải thích lại, thì chúng ta cũng đừng nhiệt tình thái quá khi còn bao nhiêu bài cần giúp khác.
Cảm ơn các ACE có quan tâm, em xin chú thích thêm (vào trong những chú thích đã có) là vầy: 1*Em là người lập danh sách phát quà (VD:Nhân đạo) đợt này (VD: có 31 người) và gửi dang sách này mỗi CÔNG TY SẼ một bản và Cty dựa vào Dsach đây để phát, trong ngày phát quà có mặt của 31 đại diện công ty tập trung tại một địa điểm (VD: SVĐ Mỹ Đình) Qù của công ty nào thì cong ty đó phát theo Dsách em lập/Mình giờ mới xem nên chưa hiểu, các công ty bạn ví dụ có 26,27,28 xuất quà. Vậy thì danh sách lên tới 31 người thì sao mà chia mỗi người đồng thời nhận 1 xuất từ mỗi công ty. Chỉ có thể tất cả đều có 26 xuất/Cty và Dsách có 26 người hoặc Dsách có số người bằng lượng quà của đơn vị có quà ít nhất, đơn vị nhiều chia thừa bỏ lại. Đồng thời, danh sách và số lượng quà của các đợn vị tài trợ cũng phải rõ ràng chứ không thể ... như bạn được. Bạn là người tiến hành chia thưởng thì đương nhiên các thông số này buộc phải có (Thậm chí còn tránh bạn gian lận đổi quà ấy chứ nên phải công khai cụ thể) và số lượng mỗi loại ít nhất phải bằng danh sách
Mình nghĩ bài này có thể làm được, có cái giải thuật sao cho hợp lý thôi.
Cảm ơn các ACE có quan tâm, em xin chú thích thêm (vào trong những chú thích đã có) là vầy: 1*Em là người lập danh sách phát quà (VD:Nhân đạo) đợt này (VD: có 31 người) và gửi dang sách này mỗi CÔNG TY SẼ một bản và Cty dựa vào Dsach đây để phát, trong ngày phát quà có mặt của 31 đại diện công ty tập trung tại một địa điểm (VD: SVĐ Mỹ Đình) Qù của công ty nào thì cong ty đó phát theo Dsách em lập/
2*Em vận động đc các công ty tham gia (Vd: có 30 công ty)/
3*Mỗi công ty có số suất quà là hạn chế (VD: Cty1 có 26 suất,..., Cty12 có 28 suất) sẽ dẫn đến: +Nếu số quà ít hơn số người thì những người sau thiếu quà (ko có quà) thì CELL úng với nguoi ko có này để trống;+còn số quà bằng số người thì phát bình thường; +Không có trường hợp số quà nhiều hơn số người/
4*Số loại quà của các Cty có thể là trùng nhau (VD: Cty1_Có mìtom,dau,botngot;...; Cty14_Có mìtom,dau,botngot,chăn,màn) vì thế nếu không giải quyết tốt trên danh sách (thuat toán) thì sẽ dẫn đến một người nhận cùng một loại quà mà ko có loại khác,...(Vì thế em muốn Mỗi người chỉ được nhận duy nhất một loại quà tất nhiên loại trừ trường hợp thiếu quà thì người sau sẽ ko có) KHÔNG TRÙNG SỐ TRÊN MỘT HÀNG/
Cảm ơn bạnVới tư duy phương pháp tìm kiếm theo chiều rộng, tức dò lần lượt từng trường hợp. Tôi gợi ý bạn 1 cách tôi cho là khá đơn giản đó là sử dụng Goal Seak có sẵn trong Excel.
Bạn xem theo file đính kèm.
Kết luận:
với giới hạn 10^15 của excel, thì kết quả là có giới hạn đối với bài toán của bạn, bạn thử là biết.
Cảm ơn các ACE có quan tâm, em xin chú thích thêm (vào trong những chú thích đã có) là vầy: 1*Em là người lập danh sách phát quà (VD:Nhân đạo) đợt này (VD: có 31 người) và gửi dang sách này mỗi CÔNG TY SẼ một bản và Cty dựa vào Dsach đây để phát, trong ngày phát quà có mặt của 31 đại diện công ty tập trung tại một địa điểm (VD: SVĐ Mỹ Đình) Qù của công ty nào thì cong ty đó phát theo Dsách em lập/
2*Em vận động đc các công ty tham gia (Vd: có 30 công ty)/
3*Mỗi công ty có số suất quà là hạn chế (VD: Cty1 có 26 suất,..., Cty12 có 28 suất) sẽ dẫn đến: +Nếu số quà ít hơn số người thì những người sau thiếu quà (ko có quà) thì CELL úng với nguoi ko có này để trống;+còn số quà bằng số người thì phát bình thường; +Không có trường hợp số quà nhiều hơn số người/
4*Số loại quà của các Cty có thể là trùng nhau (VD: Cty1_Có mìtom,dau,botngot;...; Cty14_Có mìtom,dau,botngot,chăn,màn) vì thế nếu không giải quyết tốt trên danh sách (thuat toán) thì sẽ dẫn đến một người nhận cùng một loại quà mà ko có loại khác,...(Vì thế em muốn Mỗi người chỉ được nhận duy nhất một loại quà tất nhiên loại trừ trường hợp thiếu quà thì người sau sẽ ko có) KHÔNG TRÙNG SỐ TRÊN MỘT HÀNG/
Trong file tôi có nói rõ rồi đó, sử dụng Goal SeakCảm ơn bạn
Sao tôi tạo VL tại B38 thì chỉ có cột B có tác dụng còn các cột còn lại ko; nhờ bạn kiểm tra lại giúp với; kiểu này lần đầu tôi mới thấy; bạn nói kỹ hơn giúp cho với
Tôi đi tìm tài liệu phần này để đọc.........rồi làm sau; thấy gợi ý này hay hay/ Cảm ơn chúc bạn sức khỏe hạnh phúcTrong file tôi có nói rõ rồi đó, sử dụng Goal Seak
với 2003 thì vào Tool/ Goal Seak
với 2007 thì vào Data/What if Analysis/ Goal Seak
rồi làm theo hướng dẫn trong ảnh
B38 chỉ là ô để Goal Seak cho chạy từng bước mà thôi, chứ điền tay thì ngỏm.