Ở đây chúng ta sẽ thấy một vấn đề. Chúng tôi có một mảng nhị phân. Nó có n phần tử. Mỗi phần tử sẽ là 0 hoặc 1. Ban đầu, tất cả các phần tử đều bằng 0. Bây giờ chúng ta sẽ cung cấp M lệnh. Mỗi lệnh sẽ chứa các chỉ số bắt đầu và kết thúc. Vì vậy, lệnh (a, b) chỉ ra rằng lệnh sẽ được áp dụng từ phần tử ở vị trí a đến phần tử ở vị trí b. Lệnh sẽ chuyển đổi các giá trị. Vì vậy, nó sẽ chuyển đổi từ chỉ số thể thao sang chỉ số bth. Vấn đề này là đơn giản. kiểm tra thuật toán để có được khái niệm.
Thuật toán
toggleCommand (arr, a, b)
Begin for each element e from index a to b, do toggle the e and place into arr at its position. done End
Ví dụ
#include <iostream> using namespace std; void toggleCommand(int arr[], int a, int b){ for(int i = a; i <= b; i++){ arr[i] ^= 1; //toggle each bit in range a to b } } void display(int arr[], int n){ for(int i = 0; i<n; i++){ cout << arr[i] << " "; } cout << endl; } int main() { int arr[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int n = sizeof(arr)/sizeof(arr[0]); display(arr, n); toggleCommand(arr, 3, 6); toggleCommand(arr, 8, 10); toggleCommand(arr, 2, 7); display(arr, n); }
Đầu ra
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0