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

Tìm số tam giác duy nhất trong số N tam giác đã cho trong C ++

Trong bài toán này, chúng ta được cung cấp ba mảng s1 [], s2 [] và s3 [] có kích thước N, biểu thị N hình tam giác. Nhiệm vụ của chúng ta là tìm số tam giác duy nhất trong số N tam giác đã cho.

Để một tam giác là duy nhất, tất cả các cạnh của nó phải là duy nhất, tức là không có tam giác nào khác có cùng các cạnh.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

s1[] = {1, 5, 3}
s2[] = {2, 3, 2}
s3[] = {4, 2, 5}

Đầu ra

1

Giải thích

Tam giác có các cạnh 1 2 4 là duy nhất.

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề là đếm số hình tam giác là duy nhất.

Đối với điều này, trước tiên, chúng tôi sẽ sắp xếp từng cạnh của tam giác và sau đó lưu trữ trong bản đồ, nếu giá trị của nó là duy nhất, hãy tăng số lượng.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int countUniqueTriangle(int a[], int b[], int c[], int n) {
   vector<int> triSides[n];
   map<vector<int>, int> m;
   for (int i = 0; i < n; i++) {
      triSides[i].push_back(a[i]);
      triSides[i].push_back(b[i]);
      triSides[i].push_back(c[i]);
      sort(triSides[i].begin(), triSides[i].end());
      m[triSides[i]] = m[triSides[i]] + 1;
   }
   map<vector<int>, int>::iterator itr;
   int uniqueTriCount = 0;
   for (itr = m.begin(); itr != m.end(); itr++) {
      if (itr->second == 1)
         if (itr->second == 1)
            uniqueTriCount++;
   }
   return uniqueTriCount;
}
int main() {
   int s1[] = { 1, 5 ,3 };
   int s2[] = { 2, 3, 2 };
   int s3[] = { 4, 2, 5 };
   int N = sizeof(s1) / sizeof(s1);
   cout<<"The number of unique triangles is "<<countUniqueTriangle(s1, s2, s3, N);
   return 0;
}

Đầu ra

The number of unique triangles is 1