C++程序查找塔的最小可能丑陋度
假设我们有一个包含 n 个元素的数组 A。考虑一行中有 n 座积木塔。第 i 座塔的高度为 A[i]。在一天内,我们可以执行以下操作:选择两个索引 i 和 j(i != j)并将积木从塔 i 移到塔 j。这将使 A[i] 减 1 并使 A[j] 加 1。建筑物的丑陋度为 max(A) - min(A)。我们必须找到可以达到的最小可能丑陋度。
因此,如果输入类似于 A = [1, 2, 3, 1, 5],则输出将为 1,因为我们可以对 i=2 和 j=0 执行三次操作,新的数组现在将为 [2,2,2,1,5],然后对于 i = 4 和 j = 3,数组将为 [2,2,2,2,4],对于 i = 4 和 j = 2,数组为 [2,2,3,2,3]。
步骤
为了解决这个问题,我们将遵循以下步骤:
sum := 0 x := 0 n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: sum := sum + A[i] if sum mod n is same as 0, then: return 0 return 1
示例
让我们看看以下实现以获得更好的理解:
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
int sum = 0, x = 0;
int n = A.size();
for (int i = 0; i < n; i++)
sum += A[i];
if (sum % n == 0)
return 0;
return 1;
}
int main() {
vector<int> A = { 1, 2, 3, 1, 5 };
cout << solve(A) << endl;
}输入
{ 1, 2, 3, 1, 5 }输出
1
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP