假設我們有一個包含 n 位數的數字字串 S。假設 S 代表一個數字時鐘,整個字串顯示從 0 到 10^n - 1 的整數。如果位數較少,則會顯示前導 0。依照下列運算-
將時鐘上的數字減1,或
交換兩位數字 p>
我們希望時鐘能夠以最少的操作次數顯示0。我們必須計算完成此操作所需的操作數。 因此,如果輸入類似於S = "1000",則輸出將為2,因為我們可以將前1 與後0 交換,所以字串將是“0001”,現在將其減1 得到“0000”。 步驟為了解決這個問題,我們將按照以下步驟操作-
n := size of S x := digit at place S[n - 1] for initialize i := 0, when i <= n - 2, update (increase i by 1), do: if S[i] is not equal to '0', then: x := x + (digit at place S[i]) + 1 return x範例讓我們看看以下實現,以便更好地理解-
#include <bits/stdc++.h> using namespace std; int solve(string S) { int n = S.size(); int x = S[n - 1] - '0'; for (int i = 0; i <= n - 2; i++) if (S[i] != '0') x = x + S[i] + 1 - '0'; return x; } int main() { string S = "1000"; cout << solve(S) << endl; }
"1000"###輸出###
2###
以上是C++程式以找出使數字為0所需的最少操作次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!