算法与数据结构第八次作业——散列表
数据结构 散列表7.12 三角形游戏
★实验任务
给定n个三角形,用a,b,c表示三角形的三条边(三角形可能有重复)。之后有m次询问,每次询问一个三角形在给定的n个三角形中出现的次数。
★数据输入
第一行为n,之后n行,每行有a,b,c三个数字表示三角形的三条边;接下来一行为m,之后有m行询问,每行有a,b,c三个数字,表示要询问的三角形的三边。 数据保证a,b,c为正整数且可以构成一个三角形,且a,b,c不一定有序 对于40%的数据,n<=100,m<=100,a,b,c<=100 对于70%的数据,n<=1000,m<=1000,a,b,c<=1000 对于100%的数据,n<=5,000,m<=100,000,a,b,c<=999999
★数据输出
对于每次询问,输出此三角形在之前给定的n个三角形中出现的次数
输入示例
3
2 2 3
3 3 4
2 3 2
3
2 3 2
3 3 4
1 1 1
输出示例
2
1
0
★提示 整数Hash、字符串Hash
#include<iostream>
#include<algorithm>
using namespace std;
class triangle
{
public:
int l[3];
public:
triangle(){}
triangle(int a, int b, int c)
{
l[0] = a;
l[1] = b;
l[2] = c;
sort(l, l + 3);
}
bool IsSame(triangle b)
{
bool flag = true;
for (int i = 0; i < 3; i++)
{
if (l[i] != b.l[i])
{
flag = false;
break;
}
}
return flag;
}
};
int main()
{
int n;
int a, b, c;
cin >> n;
triangle* t = new triangle[n];
for (int i = 0; i < n; i++)
{
cin >> a >> b >> c;
t[i] = triangle(a, b, c);
}
int m;
cin >> m;
triangle t2;
int sum;
for (int i = 0; i < m; i++)
{
sum = 0;
cin >> a >> b >> c;
t2 = triangle(a, b, c);
for (int j = i; j < n; j++)
{
if (t2.IsSame(t[j]))
{
sum++;
}
}
cout << sum <<endl;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】