n 桁を含む数値文字列 S があるとします。 S がデジタル時計を表し、文字列全体が 0 ~ 10^n - 1 の整数を表示するとします。桁数が少ない場合は、先頭に 0 が表示されます。次の手順に従ってください -
#時計の数字を 1 減らすか、
2 桁を入れ替えます p>
最小限の操作で時計が 0 を表示するようにします。この操作を完了するために必要な操作の数を計算する必要があります。
したがって、入力が S = "1000" のような場合、最初の 1 と最後の 0 を交換できるため、出力は 2 になり、文字列は "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
以上が数値を 0 にするために必要な最小演算数を求める C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。