在 C++ 中的给定 N 个三角形中查找唯一三角形的数量!
在这个问题中,我们给出了三个大小为N的数组s1[]、s2[]和s3[],表示N个三角形。我们的任务是在给定的N个三角形中找到唯一三角形的数量。
对于唯一的三角形,它的所有边都应该是唯一的,即没有其他三角形应该具有相同的边。
让我们举个例子来理解这个问题,
输入
s1[] = {1, 5, 3} s2[] = {2, 3, 2} s3[] = {4, 2, 5}输出结果
1
解释
边长为124的三角形是唯一的。
解决方法
该问题的一个简单解决方案是计算唯一三角形的数量。
为此,我们将首先对每个三角形的边进行排序,然后将其存储在映射中,如果它的值是唯一的,则增加计数。
程序来说明我们的解决方案的工作,
示例
#includeusing namespace std; int countUniqueTriangle(int a[], int b[], int c[], int n) { vector triSides[n]; map , 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 , 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<<"唯一三角形的数量是 "< 输出结果 唯一三角形的数量是 1