【华为OD机试2023】最多直角三角形个数 C++

最多直角三角形个数

题目描述

有N条线段,长度分别为a[1]-a[n])。现要求你计算这N条线段最多可以组合成几个直角三角形,每条线段只能使用一次,每个三角形包含三条线段。

输入描述

第一行输入一个正整数工(1<=T<= 100),表示有T组测试数据。

对于每组测试数据,接下来有T行,每行第一个正整数N,表示线段个数,(3<=N<20),接着是N个正整数,表赤每条线段长度,(0

输出描述

对于每组测试数据输出一行,每行包括一个整数,表示最多能组合的直角三角形个数。

示例

示例1

input1:

1

7 3 4 5 6 5 12 13

outpu1:

2

input2:

1
7 3 4 5 6 6 12 13

input3:

1

思路

使用dfs找出所有的组合,之后对于每一种组合求解即可,在求解的同时维护最大数量,最后输出即可,由于是T组数据,我们应当在每次开始时初始化path和ans

代码

#

你可能感兴趣的:(c++,深度优先,算法,华为,OD)