Проблема состоит в том, чтобы оценить, нет ли способов поместить скобки в данное выражение, 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;
}