CTDL và giải thuật - Xóa phần tử có chỉ số k

Bài tập.

Nhập vào một số nguyên dương n, và n số nguyên lần lượt là các phần tử trong dãy a. Tiếp theo nhập vào số nguyên là k (0 ≤ k < n).

Hãy xóa phần tử có chỉ số k ở trong dãy đó. In mảng kết quả ra màn hình, sau mỗi phần tử có đúng một khoảng trắng.

Ví dụ:

  • Test mẫu 1:
     
    Input Output

    4
    1 2 3 4
    1

    1 3 4

    Với n = 4, a = [1, 2, 3, 4], k = 1, thì kết quả mong muốn là: "1 3 4 ".
     
  • Test mẫu 2:
     
    Input Output

    3
    1 2 3
    2

    1 2 

    Với n = 3, a = [1, 2, 3], k = 2, thì kết quả mong muốn là: "1 2 ".

 

Hướng dẫn bài tập.

Ý tưởng:
Ta thấy rằng khi xóa một phần tử trong mảng thì số phần tử trong mảng bị giảm đi 1 đơn vị, tất cả những phần tử từ chỉ số 0 đến k-1 đều giữ nguyên, các phần tử từ chỉ số k đến n-1 sẽ giảm chỉ số đi 1 đơn vị (a[i] = a[i+1]).

Chú ý: nhớ dùng vào lặp hợp lý, để không bị mất giá trị các phần tử trong mảng.

Code mẫu:

Ngôn ngữ C++:

#include<iostream>

using namespace std;

int main(){
	int a[100];
	int n, k;
	cin >> n;
	for (int i = 0; i < n; i++){
		cin >> a[i];
	}
	cin >> k;
	for (int i = k; i < n; i++){
		a[i] = a[i+1];
	}
	n--;
	for (int i = 0; i < n; i++){
		cout << a[i] << " ";
	}
	
	return 0;
}