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.

5 Likes

đú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 :slightly_smiling_face:. Ra cách giải rồi thì áp dụng vào code.

4 Likes

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

5 Likes

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 :slight_smile:
ngày 1: 0 0
ngày 2: 1 1
ngày 3: 0 2
ngày 4: 1 0

6 Likes

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]
5 Likes

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ỉ :thinking: . Hay do em chưa đọc kĩ code của anh ấy nhỉ.

2 Likes

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? :stuck_out_tongue_winking_eye:

2 Likes

Sau :infinity: lần nữa thì A gặp được D :joy:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?