Почему я не могу получить вывод проблемы с логическими скобками, когда вопрос с использованием рекурсивного подхода - PullRequest
0 голосов
/ 06 мая 2020

Проблема состоит в том, чтобы оценить, нет ли способов поместить скобки в данное выражение, T | T & F ^ T.

Ожидаемый результат: 4
Мой результат: 0

вход в функцию, которую я даю: solve(s, 0, s.length - 1, true)

вот мой код:

private static int solve(char s[], int i, int j, boolean isTrue) {
 // base condition
 if (i > j)
     return 0;
 if (i == j) {
     if (isTrue) {
         return 1;
     } else {
         return 0;
     }
 }

 int ans = 0;
 // k ke loop
 for (int k = i + 1; k <= j - 1; k = k + 2) {
     int lt = solve(s, i, k - 1, true);
     int lf = solve(s, i, k - 1, false);
     int rt = solve(s, k + 1, j, true);
     int rf = solve(s, k + 1, j, false);

     if (s[k] == '^') {
         if (isTrue)
             ans = ans + lt * rt;
         else
             ans = ans + lt * rf + lf * rt + lf * rf;
     }

     if (s[k] == '|') {
         if (isTrue)
             ans = ans + lt * rt + lt * rf + lf * rt;
         else
             ans = ans + lf * rf;
     }

     if (s[k] == '^') {
         if (isTrue)
             ans = ans + lt * rf + lf * rt;
         else
             ans = ans + lt * rt + lf * rf;
     }
 }
 return ans;
}
...