Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม K Most Recently Used (MRU) Apps ใน C++


ได้รับตัวเลข k และอาร์เรย์ arr[n] ที่มี n จำนวนเต็ม เก็บ ID ของ Apps ที่เปิดอยู่ในระบบ งานคือแสดง k แอปที่ใช้ล่าสุด (Most Recently Used) เหมือนกด Alt+Tab แสดงแอปเปิดอยู่ แอปล่าสุดอยู่ก่อน แอปเก่าสุดอยู่ท้าย ตำแหน่งของแต่ละ ID แทนแอปต่างๆ:

  • ID ใน arr[0] คือ App ที่ใช้งานอยู่
  • ID ใน arr[1] คือ App ที่ใช้ล่าสุด
  • ID ใน arr[n-1] คือ App ที่ใช้เก่าสุด

หมายเหตุ - เมื่อกด Alt+Tab มี Pointer เคลื่อนผ่าน Apps เริ่มจาก Index 0 (App ที่ใช้งานอยู่)

ตัวอย่าง

Input: arr[] = {1, 2, 3, 4, 5}, k=2
Output: 3 1 2 4 5
คำอธิบาย: ต้องการสลับไป App ID 3 จะกลายเป็น Current App และ App อื่นๆ จะเป็น Recently Used ตามลำดับ

Input: arr[] = {6, 1, 9, 5, 3}, k=3
Output: 5 6 1 9 3

วิธีแก้:

  • รับ Array arr[n] และ k
  • หา Index k ของ App ที่ User ต้องการสลับ
  • ทำให้ ID ที่ Index k กลายเป็น Current แล้วจัดเรียงตามลำดับ
  • พิมพ์ผลลัพธ์

อัลกอริทึม

Start
Step 1: ฟังก์ชันหา 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: ฟังก์ชันพิมพ์ Array
  void print(int* arr, int size)
  Loop For i = 0 to size-1
    Print arr[i]
  End

Step 3: ใน main()
  Declare int elem = 3
  Declare array int arr[] = { 6, 1, 9, 5, 3 }
  Calculate size = sizeof(arr) / sizeof(arr[0])
  Call recently(arr, size, elem)
  Call print(arr, size)
Stop

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

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;
}

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;
}

ผลลัพธ์

array in most recently used fashion : 5 6 1 9 3