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

Chuyển một mảng thành dạng rút gọn (Sử dụng vectơ của các cặp) trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình chuyển đổi một mảng sang dạng rút gọn của nó bằng cách sử dụng các cặp vectơ.

Đối với điều này, chúng tôi sẽ được cung cấp một mảng. Nhiệm vụ của chúng ta là chuyển đổi mảng đã cho ở dạng rút gọn để nó chỉ chứa các phần tử từ 0 đến n-1.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//converting array to its reduced form
void convert(int arr[], int n){
   //creating a vector of pairs
   vector <pair<int, int> > v;
   //putting elements in vector
   //with their indexes
   for (int i = 0; i < n; i++)
      v.push_back(make_pair(arr[i], i));
   sort(v.begin(), v.end());
   for (int i=0; i<n; i++)
   arr[v[i].second] = i;
}
//printing the array
void print_array(int arr[], int n) {
   for (int i=0; i<n; i++)
      cout << arr[i] << " ";
}
int main(){
   int arr[] = {10, 20, 15, 12, 11, 50};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Given Array is :\n";
   print_array(arr, n);
   convert(arr , n);
   cout << "\nConverted Array:\n";
   print_array(arr, n);
   return 0;
}

Đầu ra

Given Array :
10 20 15 12 11 50
Converted Array:
0 4 3 2 1 5