Это подзадача проблемы, над которой я работаю.
Человек стоит на оси х в точке 0 и получает на свой телефон строку, чтобы добраться до пункта назначения.
+ означает перемещение на 1 единицу в положительном направлении.
- означает перемещение на 1 единицу в отрицательном направлении.
Строка, отправленная ему, и строка, которую он фактически получает, искажены внешними факторами.
Строка, которую он фактически получает, содержит третий символ, который он не может прочитать, т. Е. '?'. Если он читает? он делает случайный выбор, чтобы переместиться на 1 единицу вправо или влево.
Мне нужно найти вероятность того, что успешный человек достигнет своего конечного пункта назначения с текстом, который он получил.
Например:
s1 = + - + -
s2 = + - ??
s1 оценивается в 0 (1-1 + 1-1).
s2 может иметь значения (2,0, -2,0)
Таким образом, вероятность того, что он достигнет пункта назначения, составляет 2/4 = 0,5
То, что я делал до сих пор, рассчитывает итоговый балл назначения в соответствии с s1 и временный балл в соответствии с + s anf -s в s2, а разница между ними - сумма, которую я пытаюсь достичь.
Теперь возникает вопрос: сколько способов вы можете получить сумму x, используя y 1s и -1s. И рассчитать вероятность, используя это значение, деленное на 2 ^ у.
private static double calculateProb(String s1, String s2) {
// TODO Auto-generated method stub
char[] c1 = s1.toCharArray();
char[] c2 = s2.toCharArray();
int num_q = 0, temp = 0;
int score = 0;
for(char c: c1){
if(c=='+')
score+=1;
else if(c=='-')
score-=1;
}
for(char c : c2){
if(c=='+')
temp+=1;
else if(c=='-')
temp-=1;
else if(c=='?')
num_q++;
}
return 0.0;
}
Это то, что я имею до сих пор.