Tuyên bố vấn đề
Cho một mảng có kích thước N và mỗi phần tử là 1 hoặc 0. Nhiệm vụ là tính số phép toán tối thiểu phải thực hiện để chuyển tất cả các phần tử thành 0. Người ta có thể thực hiện các thao tác dưới đây -
Nếu một phần tử là 1, Bạn có thể thay đổi giá trị của nó bằng 0 sau đó -
-
Nếu phần tử liên tiếp tiếp theo là 1, phần tử đó sẽ tự động được chuyển đổi thành 0
-
Nếu phần tử liên tiếp tiếp theo đã là 0 thì sẽ không có gì xảy ra.
Nếu arr [] ={1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1} thì 4 thao tác được yêu cầu để làm cho tất cả các phần tử bằng khôngThuật toán
1.Nếu phần tử hiện tại là 1 thì hãy tăng số lượng và tìm kiếm số 0 tiếp theo vì tất cả các số 1 liên tiếp sẽ được tự động chuyển đổi thành 0,2. Trả lại tổng số cuối cùngVí dụ
#include#define SIZE (arr) (sizeof (arr) / sizeof (arr [0])) using namespace std; int performanceMinOperation (int * arr, int n) {int i, cnt =0; for (i =0; i Đầu ra
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 -
Các thao tác bắt buộc tối thiểu =4