Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In lần xuất hiện cuối cùng của phần tử mảng theo thứ tự tương đối trong C

Cho mảng a[], in các phần tử theo lần xuất hiện cuối cùng, giữ thứ tự tương đối theo lần cuối xuất hiện.

Ví dụ: {1,3,2,3,1,2} -> lần cuối: 3 (vị trí 3), 1 (vị trí 4), 2 (vị trí 5) -> kết quả 3 1 2.

Ví dụ

Input: a[] = {4,2,2,4,1,5,1}
Output: 2 4 5 1

In lần xuất hiện cuối cùng của phần tử mảng theo thứ tự tương đối trong C

Thuật toán

BẮT ĐẦU
HÀM printelements(int a[], int n)
    unordered_map ele
    VỚI i=0 ĐẾN n-1: ele[a[i]] = i  // lưu chỉ số cuối
    VỚI i=0 ĐẾN n-1
        NẾU ele[a[i]] == i THÌ IN a[i]  // đúng là lần cuối
KẾT THÚC

Chương trình C++ ví dụ

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

void printelements(int a[], int n) {
    unordered_map ele;
    for (int i = 0; i < n; i++) ele[a[i]] = i;
    for (int i = 0; i < n; i++)
        if (ele[a[i]] == i) cout << a[i] << " ";
}

int main() {
    int a[] = {4,2,2,4,1,5,1};
    int n = sizeof(a)/sizeof(a[0]);
    printelements(a, n);
    return 0;
}

Kết quả

2 4 5 1