Ta được cung cấp một mảng, và ta được giao nhiệm vụ loại bỏ các số 0 dẫn đầu khỏi mảng cho trước và sau đó in mảng.
Input : arr[] = {0, 0, 0, 1, 2, 3} Output : 1 2 3 Input : arr[] = {0, 0, 0, 1, 0, 2, 3} Output : 1 0 2 3Trong bài toán cho trước, ta có thể tạo một mảng mới không chứa các số 0 dẫn đầu của mảng trước.
Phương pháp tìm giải pháp
Trong phương pháp này, ta sẽ đi qua mảng và chèn tất cả các số nhưng không có số 0 dẫn đầu.
Ví dụ
#include <iostream> using namespace std; int main() { int arr[] = {0, 0, 0, 1, 2, 0, 4}; int n = sizeof(arr) / sizeof(int); // kích thước mảng cho trước. int last = -1; for(int i = 0; i < n; i++) { // tìm phần tử khác 0 đầu tiên if(arr[i] != 0) { last = i; break; } } if(last == -1) cout << "Empty\n"; else { int b[n - last]; // mảng mới. for(int i = last; i < n; i++) // chèn phần tử vào mảng mới b[i-last] = arr[i]; for(int i = 0; i < n-last; i++) // in mảng cout << b[i] << " "; } }Kết quả
1 2 0 4
Giải thích mã trên
Trong chương trình cho trước, ta trước tiên duyệt qua mảng arr và tìm chỉ số của phần tử khác 0 đầu tiên, lưu vào biến last. Bây giờ nếu last là -1 sau duyệt, nghĩa là toàn mảng toàn số 0, in "Empty".
Bây giờ, khi đã có chỉ số phần tử khác 0 đầu tiên, ta xác định kích thước mảng mới, tức là (n - last), và chạy vòng lặp từ last đến nhỏ hơn n. Ta chèn các phần tử này vào mảng mới và in mảng mới.
Kết luận
Trong bài viết này, ta giải quyết bài toán Loại bỏ số 0 dẫn đầu khỏi mảng. Ta cũng học chương trình C++ cho bài toán này và phương pháp hoàn chỉnh ta đã giải quyết. Ta có thể viết cùng chương trình bằng ngôn ngữ khác như C, Java, Python và các ngôn ngữ khác. Hy vọng bạn thấy bài viết hữu ích.