解题思路
方法:直接模拟
由于数据范围较小(n≤100n \leq 100n≤100, ai≤100a_i \leq 100ai ≤100),我们可以直接模拟每次操作的过程。
每次操作的步骤:
1. 遍历数组找到最大值及其下标(选最大的下标)
2. 遍历数组找到最小的非零值
3. 将最大值减去最小非零值
4. 操作次数+1
终止条件:数组中所有元素都为0
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
代码实现
C++ 实现
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
样例验证
样例1:[2, 3, 4]
操作次数 数组状态 最大值(下标) 最小非零值 操作 0 [2, 3, 4] - - 初始 1 [2, 3, 2] 4(下标2) 2 4-2=2 2 [2, 1, 2] 3(下标1) 2 3-2=1 3 [2, 1, 1] 2(下标2) 1 2-1=1 4 [1, 1, 1] 2(下标0) 1 2-1=1 5 [1, 1, 0] 1(下标2) 1 1-1=0 6 [1, 0, 0] 1(下标1) 1 1-1=0 7 [0, 0, 0] 1(下标0) 1 1-1=0
答案:7次 ✓