Cho một số k và một mảng arr [n], chứa n số phần tử nguyên đang lưu trữ id của các ứng dụng đã mở trong một hệ thống; nhiệm vụ là hiển thị k số ứng dụng được sử dụng gần đây nhất, như khi chúng ta nhấn tab alt + sẽ hiển thị tất cả các ứng dụng gần đây và gần đây nhất trước ít gần đây nhất. Vị trí của mỗi id đại diện cho các ứng dụng khác nhau trong hệ thống -
Chúng như sau -
- Id in arr [0] là id của một ứng dụng hiện đang được sử dụng.
- Id in arr [1] là id của ứng dụng được sử dụng gần đây nhất.
- Id in arr [n-1] là id của một ứng dụng ít được sử dụng gần đây nhất.
Lưu ý - Khi chúng ta nhấn phím Alt + Tab, sẽ có một con trỏ di chuyển qua tất cả các ứng dụng đã mở bắt đầu từ chỉ mục 0, ứng dụng hiện đang được sử dụng.
Ví dụ
Input: arr[] = {1, 2, 3, 4, 5}, k=2 Output: 3 1 2 4 5 Explanation: We wished to switched the app with id 3, so it will become the currently active app and other active apps will be the most recently used now Input: arr[] = {6, 1, 9, 5, 3}, k=3 Output: 5 6 1 9 3
Phương pháp tiếp cận mà chúng tôi sẽ sử dụng để giải quyết vấn đề trên -
- Lấy một mảng arr [n] và k làm đầu vào.
- Nhận chỉ mục, tức là k của ứng dụng mà người dùng muốn chuyển đổi.
- Tạo id ở chỉ số k như hiện tại và sau đó sắp xếp chúng theo thứ tự.
- In kết quả.
Thuật toán
Start Step 1-> declare the function to find k most recently used apps void recently(int* arr, int size, int elem) Declare int index = 0 Set index = (elem % size) Declare and set int temp = index, id = arr[index] Loop While temp > 0 Set arr[temp] = arr[--temp] End Set arr[0] = id Step 2-> declare function to print array elements void print(int* arr, int size) Loop For i = 0 and i < size and i++ Print arr[i] End Step 3-> In main() Declare and set for elements as int elem = 3 Declare array as int arr[] = { 6, 1, 9, 5, 3 } Calculate size as int size = sizeof(arr) / sizeof(arr[0]) Call recently(arr, size, elem) Call print(arr, size) Stop
Ví dụ
#include <bits/stdc++.h> using namespace std; // Function to update the array in most recently used fashion void recently(int* arr, int size, int elem) { int index = 0; index = (elem % size); int temp = index, id = arr[index]; while (temp > 0) { arr[temp] = arr[--temp]; } arr[0] = id; } //print array elements void print(int* arr, int size) { for (int i = 0; i < size; i++) cout << arr[i] << " "; } int main() { int elem = 3; int arr[] = { 6, 1, 9, 5, 3 }; int size = sizeof(arr) / sizeof(arr[0]); recently(arr, size, elem); cout<<"array in most recently used fashion : "; print(arr, size); return 0; }
Đầu ra
mảngarray in most recently used fashion : 5 6 1 9 3