Tuyên bố vấn đề
Cho hai mảng số nguyên chẵn [] và lẻ [] chứa các phần tử chẵn và lẻ liên tiếp tương ứng với mỗi mảng thiếu một phần tử. Nhiệm vụ là tìm các phần tử còn thiếu.
Ví dụ
Nếu chẵn [] ={10, 8, 6, 16, 12} andodd [] ={3, 9, 13, 7, 11} thì số loại bỏ từ mảng chẵn là 14 và từ mảng lẻ là 5.Thuật toán
- Lưu trữ các phần tử chẵn tối thiểu và lớn nhất từ mảng [] chẵn trong các biến minEven và maxEven
- Tổng của N số chẵn đầu tiên là N * (N + 1). Tính tổng các số chẵn từ 2 đến nhỏ nhất Thậm chí nói tổng 1 và tổng các số chẵn từ 2 đến cực đại Thậm chí nói sum2
- Tổng bắt buộc của mảng chẵn sẽ là reqSum =sum2 - sum1 + minEven, trừ tổng mảng chẵn [] khỏi reqSum này sẽ cho chúng ta số chẵn còn thiếu
- Tương tự, số lẻ còn thiếu cũng có thể được tìm thấy vì chúng ta biết rằng tổng của N số lẻ đầu tiên là N2
Ví dụ
#includeusing namespace std; void findMissingNums (int chẵn [], int sizeEven, int retail [], int sizeOdd) {int minEven =INT_MAX; int maxEven =INT_MIN; int minOdd =INT_MAX; int maxOdd =INT_MIN; int sumEvenArr =0, sumOddArr =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
Thiếu số chẵn =14 Thiếu số lẻ =5