Подставить в уравнение такие десятичные цифры, чтобы уравнение стало верным - C#
Формулировка задачи:
В уравнении вида A + B = C, где A, B и C — неотрицательные целые числа, некоторые цифры заменены на знаки вопроса.
Необходимо подставить вместо знаков вопроса такие десятичные цифры, чтобы уравнение стало верным, либо определить, что это невозможно.
На входе подаётся единственная строка текста — уравнение с вопросительными знаками. Длина уравнения не превышает 200 символов. Входные данные не содержат никаких символов, кроме десятичных цифр, вопросительных знаков, символа «плюс» и символа «равно». Кроме того, после конца строки может следовать символ перевода строки.
На стандартный поток вывода напечатайте уравнение с подставленными вместо знаков вопроса цифрами, если решение существует, и выведите единственное слово No, если решения нет. Если задача допускает несколько решений, выводите любое. В ответе разрешены ведущие нули (см. примеры).
Примеры
Входные данные Результат работы
?2+34=4? 12+34=46
?2+34=47 No
??2?4+9?=355 00264+91=355
Решение задачи: «Подставить в уравнение такие десятичные цифры, чтобы уравнение стало верным»
textual
Листинг программы
static bool Run(char[] s, int p, int v = 0, int f = -1) { if (--p < 0) return v == 0; switch(s[p]) { case '=': case '+': return Run(s, p, v, 1); case '?': for (s[p] = '0'; s[p] <= '9'; s[p]++) if (Run(s, p, v + f * (s[p] - '0'), f * 10)) return true; s[p] = '?'; return false; default: return Run(s, p, v + f * (s[p] - '0'), f * 10); } } static void Main() { var s = "?2+34=4?"; // Console.ReadLine(); var b = s.ToCharArray(); Console.Write(s + " "); Console.WriteLine(Run(b, b.Length) ? new string(b) : "No"); Console.ReadLine(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д