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
廣告