zzh11 发表于 2021-11-9 13:20:58

求这道题目的解,想了好久想不出来

求解

阿奇_o 发表于 2021-11-9 14:47:47

难点主要是 题意。。比较难理解。。
但首先可以肯定是"排列组合"的问题,然后根据它的举例和提示,可以理解它的意思。。
代码反而比较简单:
>>> 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:48:46

本帖最后由 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 个,不搞清楚这个问题,无法编写代码。
      

zzh11 发表于 2021-11-9 15:02:17

谢谢回答,但五座山并没有错,因为顺序不能表

yi3301168449 发表于 2021-11-15 09:27:16

可以进一步优化效率
页: [1]
查看完整版本: 求这道题目的解,想了好久想不出来