Phân công trực nhật bằng C++
Các bác cho em hỏi:
Giả sử 2 phân xưởng có lần số lượng công nhân như sau:
Phân xưởng 1: A B
Phân xưởng 2: C D E
Thì làm sao để sắp xếp với mỗi người ở phân xưởng A sẽ trực nhật lần lượt với người ở phân xưởng B.
có dạng kiểu:
Ngày 1: A C
Ngày 2: B D
Ngày 3: A E
Ngày 4: B C
Ngày 5: A D
Ngày 6: B E
…
em viết vòng for như hình trên mà nó xuất không được như yêu cầu.
Mong mọi người giúp đỡ, em cảm ơn!
Cách của bạn thì A
sẽ làm liên tục 3 ngày cùng với C D E
sau đó mới đến B
.
Dùng 1 vòng lặp, 1 phép nhân và 2 phép chia lấy dư sẽ giải quyết vấn đề của bạn.
đúng rồi bác ơi, cơ mà bác nói rõ hơn giúp mình đoạn phép nhân với phép chia lấy dư được không?
Tự suy nghĩ đi bạn ey, thử động não, ghi vào giấy là tự nhiên nghĩ ra cách giải thôi . Ra cách giải rồi thì áp dụng vào code.
Follow theo idea của bác @SITUVN.gcd
Phân xưởng 1 - (PX1): 2 người (A
, B
)
Phân xưởng 2 - (PX2): 3 người (a
, b
, c
)
=> Nếu muốn phân công xen kẻ cho PX1 thì có nghĩa là A
sẽ trực vào ngày chẵn, B
trực vào ngày lẻ. Do PX2 có đến 3 người nên sẽ xoay tua từng người 1. Có 3 người thì xoay tua 3 ngày, giả sử ngày là day
, nếu day
chia hế cho 3 thì a
trực, day
chia 3 dư 1 thì b
trực, tương tự nếu day
chia 3 dư 2 thì c
trực.
Rồi thử chạy mã giả xem thế nào:
ngày 1:
- Ngày lẻ, chia 3 dư 1 -> B
+ b
ngày 2:
- Ngày chẵn, chia 3 dư 2 -> A
+ c
ngày 3:
- Ngày lẻ, chia 3 dư 0 -> B
+ a
ngày 4:
- Ngày chẵn, chia 3 dư 1 -> A
+ b
…
Nếu ko có ràng buộc gì thêm thì bạn cứ đếm 0 1 2 3… quay vòng ở cả hai nhóm là ra 1 cặp
ngày 1: 0 0
ngày 2: 1 1
ngày 3: 0 2
ngày 4: 1 0
…
số lượng người ở phân xưởng là do mình nhập vào chứ k phải cố định là 2 3 như em ví dụ trên đâu ạ
Áp dụng quy tắc mà mọi người đang nói tới thôi.
Gợi ý
a[ngay % n]
Anh ơi cho em hỏi xuất không đúng yêu cầu ở đây là cái gì không đúng yêu cầu vậy ạ. Số ngày không đúng yêu cầu hay là ghép cặp không đúng người ạ. Tại em thấy code của anh chỉ sai cái đếm ngày còn lại đúng mà nhỉ . Hay do em chưa đọc kĩ code của anh ấy nhỉ.
cảm ơn bác nhiều, em ra rồi
Hỏi thêm một chút: nếu xưởng 1 có 2 người A và B, xưởng 2 có 4 người C D E F, thì bao giờ A mới gặp được D?
Sau lần nữa thì A gặp được D