Computer >> Máy Tính >  >> Lập trình >> C ++

Số hoạt động tối thiểu trên một mảng để tạo tất cả các phần tử bằng 0 bằng C ++.

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ông  

Thuậ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ùng 

Ví 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