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
위 내용은 숫자 0을 만드는 데 필요한 최소 연산 수를 찾는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!