求这道题目的解,想了好久想不出来
求解 难点主要是 题意。。比较难理解。。但首先可以肯定是"排列组合"的问题,然后根据它的举例和提示,可以理解它的意思。。
代码反而比较简单:
>>> n = int(input())
5
>>> p = list(map(int, input().split()))
0 1 3 4 2
>>> p
>>> for i in p:
for j in p:
for k in p:
if i < j and j > k and i != k and p.index(i)<p.index(j) and p.index(j)<p.index(k): # 需要仔细读几遍它的 定义 和 假设(如每个点的高度数值不相等)
print(f'({i}, {j}, {k})')
(0, 3, 2)
(0, 4, 2)
(1, 3, 2)
(1, 4, 2)
(3, 4, 2)
>>> 本帖最后由 jackz007 于 2021-11-9 14:50 编辑
按题目的要求,每三个不一样的数构成一座山,那么,
0 1 3 4 2
以上 5 个数可以构成的是 10 座而不是 5 座山:
(0 , 2 , 1) , (0 , 3 , 1) , (0 , 3 , 2) , (1 , 3 , 2) , (0 , 4 , 1) , (0 , 4 , 2) , (0 , 4 , 3) , (1
, 4 , 2) , (1 , 4 , 3) , (2 , 4 , 3)
可是,题目样本给出的答案却是 5 个,不搞清楚这个问题,无法编写代码。
谢谢回答,但五座山并没有错,因为顺序不能表 可以进一步优化效率
页:
[1]