Andaikan kita mempunyai rentetan angka S yang mengandungi n digit. Katakan S mewakili jam digital dan keseluruhan rentetan memaparkan integer dari 0 hingga 10^n - 1. Jika terdapat lebih sedikit digit, 0 di hadapan dipaparkan. Ikut langkah ini -
kurangkan nombor pada jam sebanyak 1, atau
tukar dua digit p>
Kami mahu jam itu memaparkan 0 dengan bilangan operasi minimum. Kita perlu mengira bilangan operasi yang diperlukan untuk menyelesaikan operasi ini.
Jadi jika input adalah seperti S = "1000" output akan menjadi 2 kerana kita boleh menukar 1 pertama dengan 0 terakhir jadi rentetan akan menjadi "0001" sekarang tolak 1 untuk mendapatkan "0000".
Untuk menyelesaikan masalah ini kami akan mengikuti langkah berikut -
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
Mari kita lihat pelaksanaan berikut untuk pemahaman yang lebih baik -
#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
Atas ialah kandungan terperinci Program C++ untuk mencari bilangan operasi minimum yang diperlukan untuk membuat nombor 0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!