30/09/2018, 17:16

Xin ý tưởng về bài toán trong lập trình c#

Mình có bài toán như thế này.


Minh đã là sinh viên năm cuối nên lớp Minh định tổ chức một buổi đi picnic. Các bạn của beo muốn thuê xe con 4 chỗ để đi, mỗi xe chỉ chở được tối đa 4 người. Ngoài ra, vì có những nhóm bạn chơi chung nên họ không muốn đi khác nhau. Minh được giao nhiệm vụ thuê xe.

Hãy giúp Minh tìm ra số xe ít nhất để phục vụ cho buổi picnic.

Input

Dòng đâu tiên là số nguyên n(n<=10^5) là số nhóm bạn.

Dòng thứ 2 gồm n số nguyên có giá trị không vượt quá 4. Số thứ i là số người trong nhóm bạn thứ i. Các số cách nhau bằng 1 khoảng trắng.
Output

Một số nguyên duy nhất là số xe cần để phục vụ cho buổi dã ngoại
Example

Input:

8
1 1 2 2 4 4 3 3

Output:

5


Mọi người giúp mình tìm hướng giải quyết cho bài toán với.

Gió viết 19:17 ngày 30/09/2018

Tham lam thôi:

  • nhóm 4 người thì tất nhiên cần 1 xe
  • nhóm 3 , 1 ghép với nhau , nếu nhóm 3 thừa thì không ghép dc. buộc đi xe riêng
  • nhóm 2 di với 2 nhóm 1. dư nhóm 2 thì nhóm 2 đi với nhau, hoặc nhóm 1 đi với nhau
  • số lẻ ra đi 1 xe riêng nữa
Doan Vi viết 19:18 ngày 30/09/2018

Làm sao mà mình ghép chúng vs nhau được bạn, trong khi bài này không được dùng 2 vòng for lồng nhau.

Gió viết 19:25 ngày 30/09/2018

Giả sử bạn đếm dc số nhóm 3 người là 5, số nhóm 1 là 6. Như vậy theo bước 2. Số nhóm 3-1 ghép dc = min(5,6) =5. Bạn cần 5 xe cho bước 2 này

Doan Vi viết 19:20 ngày 30/09/2018

Ví dụ mình có:
5
1 1 1 2 3.

Hoặc

5
1 1 1 1 1

Từng bước bạn làm sẽ như thế nào.

Bài liên quan
0