Если количество знаков вопроса в данной строке равно m, возможное количество комбинаций равно 2 ^ m.Так почему?
Для "?"Ответ "0", "1"
Для "??"Ответ "00", "01", "1,0", "11" (добавление 0 и 1 с каждым результатом "?" = ("0", "1"))
For "???»Ответ: «000», «001», «010», «011», «100», «101», «110», «111», (суммируя 0 и 1 с каждым результатом «??»)
Когда количество знаков вопроса равно 1, возможное количество комбинаций равно 2 = 2 ^ 1.
Когда количество знаков вопроса равно 2, возможное количество комбинаций равно 2 * 2 = 4 = 2 ^ 2.
Когда количество знаков вопроса равно 3, возможное количество комбинаций равно 4 * 2 = 8 = 2 ^ 3.
Когда число знаков вопроса равно 4, возможное количество комбинаций равно 8 * 2 = 16= 2 ^ 4.
Когда количество знаков вопроса равно 5, возможное количество комбинаций равно 16 * 2 = 32 = 2 ^ 5.
Когда количество знаков вопроса равно 6, возможное количество комбинаций равно 32* 2 = 64 = 2 ^ 6.
Если число вопросов равно 7, возможное число комбинаций равно 64 * 2 = 128 = 2 ^ 7.
Таким образом, когда число вопросительных знаков равно m, возможное число комбинаций равно 2 ^ m.
Как мы знаем из двоичной системы, что каждое число от 0 до (2 ^ m) -1дает комбинацию двоичных 0 и 1.
Так что, когда длина равна 1, мы можем рассмотреть от 0 до (2 ^ 1) -1 = 1
0 0
1 1
Так, когда длина равна2, мы можем рассмотреть от 0 до (2 ^ 2) -1 = 3
0 00
1 01
2 10
3 11
Таким образом, когда длина равна 3, мы можем рассмотреть от 0 до (2 ^ 3) -1 = 7
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Аналогично для длины m мы можем рассмотреть 0 до (2 ^ m) -1.
Таким образом, мы можем взять каждое число от 0 до (2 ^ m) -1.
Для каждого числа мы будем проверять каждый бит от 0 до m-1.
Если i-й бит равен 0, мы будем ставить 0 в i-й '?'.
Если i-йбит равен 1, мы поместим 1 в i-й '?'.
Таким образом, мы получим 2 ^ m различных строк.