Computer >> 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 các phần tử trong mảng theo thứ tự tương đối trong C Program.

Cho một mảng a [] với các phần tử và nhiệm vụ là in ra các lần xuất hiện cuối cùng của các phần tử đã cho trong danh sách. Ở đây, chúng ta không chỉ phải loại bỏ các phần tử trùng lặp mà còn phải duy trì thứ tự xuất hiện của các phần tử trong một mảng theo lần cuối cùng chúng xuất hiện.

Giống như chúng ta có một mảng gồm 6 phần tử cũng chứa một số giá trị trùng lặp, tức là {1,3, 2, 3, 1, 2} vì vậy kết quả phải ở dạng 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 các phần tử trong mảng theo thứ tự tương đối trong C Program.

Thuật toán

START
Step 1-> Declare function void printelements(int a[], int n)
   Use STL unordered_map<int, int> ele
   Loop For int i=0 and i<n and i++
      Set ele[a[i]]=i
   Loop For int i=0 and i<n and i++
      IF ele[a[i]]=i
         Print a[i]
      End
   End
Step 2 -> main()
   Declare array a[]={4,2,2,4,1,5,1}
   Declare int n=sizeof(a)/sizeof(a[0])
   Call Function printelements(a,n)
STOP

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void printelements(int a[], int n) {
   unordered_map<int, int> 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;
}

Đầu ra

nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau

2 4 5 1