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

Chương trình cho K ứng dụng được sử dụng gần đây nhất (MRU) trong C ++

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ảng
array in most recently used fashion : 5 6 1 9 3