模拟2
2026-07-20 15:10:52
发布于:湖北
19阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int a[110];
int main() {
int n;
cin >> n;
// 输入数组
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int ans = 0; // 操作次数
// 一直循环,直到数组全是 0
while (1) {
// ======================
// 第一步:找最大数,下标最大的那个
// ======================
int max_val = -1;
int max_idx = 0;
for (int i = 1; i <= n; i++) {
// 比当前大,或者相等但下标更靠后
if (a[i] >= max_val) {
max_val = a[i];
max_idx = i;
}
}
// 最大值是 0,说明全部都是 0,结束
if (max_val == 0) break;
// ======================
// 第二步:找非 0 数里最小的
// ======================
int min_val =1000000;
for (int i = 1; i <= n; i++) {
if (a[i] != 0 && a[i] < min_val) {
min_val = a[i];
}
}
// ======================
// 第三步:最大值减去最小值
// ======================
a[max_idx] -= min_val;
ans++; // 操作次数 +1
}
cout << ans << endl;
return 0;
}
这里空空如也



有帮助,赞一个