Cari bilangan pasangan unik dalam tatasusunan menggunakan C++

WBOY
Lepaskan: 2023-09-07 11:53:09
ke hadapan
506 orang telah melayarinya

Cari bilangan pasangan unik dalam tatasusunan menggunakan C++

Kami memerlukan pengetahuan yang betul untuk mencipta beberapa pasangan unik dalam sintaks tatasusunan dalam C++. Semasa mencari bilangan pasangan unik, kami mengira semua pasangan unik dalam tatasusunan yang diberikan iaitu semua pasangan yang mungkin boleh dibentuk di mana setiap pasangan harus unik. Sebagai contoh -

Input : array[ ] = { 5, 5, 9 }
Output : 4
Explanation : The number of all unique pairs are (5, 5), (5, 9), (9, 5) and (9, 9).

Input : array[ ] = { 5, 4, 3, 2, 2 }
Output : 16
Salin selepas log masuk

Cara untuk mencari penyelesaian

Terdapat dua cara untuk menyelesaikan masalah ini, iaitu −

Kaedah brute force

Dalam kaedah ini, kami akan mengulangi setiap pasangan yang mungkin menambah pasangan ini ke Dalam koleksi, akhirnya cari saiz koleksi. Kerumitan masa kaedah ini ialah O(n2 log n).

Contoh

#include <bits/stdc++.h>
using namespace std;
int main () {
   int arr[] = { 5, 4, 3, 2, 2 };
   int n = sizeof (arr) / sizeof (arr[0]);
   // declaring set to store pairs.
   set < pair < int, int >>set_of_pairs;

   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
         set_of_pairs.insert (make_pair (arr[i], arr[j]));

   int result = set_of_pairs.size();

   cout <<"Number of unique pairs : " << result;
   return 0;
}
Salin selepas log masuk

Output

Number of unique pairs : 16
Salin selepas log masuk
Salin selepas log masuk

Penjelasan kod di atas

Dalam kod ini, mula-mula kita mengisytiharkan pembolehubah yang ditetapkan dan kemudian menggunakan dua gelung untuk mengulangi setiap pasangan elemen yang mungkin dan menukar setiap pasangan menggunakan i dan j Elements are dimasukkan ke dalam koleksi. Kemudian kami mengira saiz koleksi dan mencetak hasilnya.

Kaedah yang cekap

Cara lain ialah dengan terlebih dahulu mengetahui bilangan nombor unik dalam tatasusunan sekarang, selain daripada dirinya sendiri, setiap elemen unik lain boleh mencipta pasangan dengan mana-mana elemen unik lain, jadi bilangan pasangan unik Sama dengan; kuasa dua semua nombor unik. Kerumitan masa kaedah ini ialah O(n).

Contoh

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

int main () {
   int arr[] = { 5, 4, 3, 2, 2 };
   int n = sizeof (arr) / sizeof (arr[0]);

   // declaring set to store unique elements.

   unordered_set < int >set_of_elements;
   // inserting elements in the set.
   for (int i = 0; i < n; i++)
      set_of_elements.insert (arr[i]);

   int size = set_of_elements.size ();
   // finding number of unique pairs
   int result = size * size;

   cout << "Number of unique pairs in an array: " << result;
   return 0;
}
Salin selepas log masuk

Output

Number of unique pairs : 16
Salin selepas log masuk
Salin selepas log masuk

Penjelasan kod di atas

Dalam kod ini, kami mengisytiharkan koleksi dan kemudian melelang melalui setiap elemen tatasusunan dan memasukkan setiap elemen ke dalam koleksi. Selepas itu, kami mengira saiz set dan mendapati hasilnya mengikut formula n2 dan mencetak output.

Kesimpulan

Dalam artikel ini, kami menyelesaikan masalah mencari logaritma unik dalam tatasusunan dan membincangkan dua penyelesaian, mudah dan cekap. Dalam pendekatan mudah kami memasukkan semua pasangan yang mungkin ke dalam set dengan kerumitan masa O(n2 log n), manakala dalam pendekatan cekap kami mencari semua nombor unik dan mencari hasilnya dengan n2. Kita boleh menulis program yang sama dalam bahasa lain seperti C, Java, Python dan lain-lain. Semoga artikel ini membantu anda.

Atas ialah kandungan terperinci Cari bilangan pasangan unik dalam tatasusunan menggunakan C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!