Tuyên bố vấn đề
Cho một mảng arr [] gồm N số nguyên. Chúng ta cần viết một chương trình để tìm số phần tử tối thiểu cần thiết để loại bỏ khỏi mảng, sao cho tổng các phần tử còn lại là số chẵn.
Ví dụ
Nếu mảng đầu vào là {10, 20, 30, 5} thì chúng ta cần loại bỏ một phần tử, tức là 5 để làm cho tổng mảng là chẵn
Thuật toán
1. Tổng của bất kỳ số chẵn nào luôn luôn là số chẵn2. Tổng các số lẻ của các số lẻ luôn là số lẻ3. Tổng các số lẻ của số chẵn luôn là số chẵn4. Đếm số phần tử lẻ trong mảng. Nếu số phần tử lẻ trong mảng là chẵn thì ta không cần xóa phần tử nào khỏi mảng nhưng nếu số phần tử lẻ trong mảng là số lẻ thì bằng cách xóa bất kỳ một phần tử lẻ nào khỏi mảngVí dụ
#includeusing namespace std; int getMinRemovals (int * arr, int n) {int cnt =0; for (int i =0; i Khi bạn biên dịch và thực thi chương trình trên. Nó tạo ra kết quả sau
Đầu ra
Số lần xóa bắt buộc tối thiểu =1