Задача
Учитывая следующий метод:
public static int f(String input) {
Stack<Character> stack = new Stack<Character>();
int n = 0;
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) == 'd')
stack.push('d');
else if (input.charAt(i) == 'b') {
if (!stack.empty() && stack.pop() == 'd') n++;
}
}
return n;
}
Какими будут возвращаемые значения для указанного выше метода, если вход равен:
(i) "bdbdbd"
(ii) "dddbbb"
(iii) "buddy"
Варианты ответа:
1. i) 3 ii) 0 iii) 1
2. i) 3 ii) 3 iii) 1
3. i) 2 ii) 3 iii) 0
4. i) 2 ii) 1 iii) 0
Ответ: 3.
Объяснение.
Программа считывает символы из входной строки, по одному.
Всякий раз, когда программа читает символ 'd', она вносит символ 'd' в стек.
Всякий раз, когда программа читает символ 'b', она вынимает символ из стека и проверяет, является ли он это символом 'd'.
Если это действительно 'd', переменная счетчика n будет увеличена на 1.
Целью программы является соединить символ 'b' с ранее считанным символом 'd' и подсчитать количество уникальных пар.
Таким образом, для ввода "bdbdbd" мы можем найти 2 пары.
Для ввода "dddbbb", мы можем найти 3 пары.
Для ввода "buddy", мы не можем найти какие-либо пары.
Задача
Как много различных решений (зеркальные решения считаются различными) будут у задачи n-ферзей с:
n=3
n=4
n=5
n=6
n=7
Ответ:
0
2
10
4
40
Объяснение.
http://en.wikipedia.org/wiki/Eight_queens_puzzle#Counting_solutions
Задание
Завершить метод leaveQueue программы CarQueue, следуя инструкциям, указанным в коде.