Книга: Основы программирования с Java
Назад: Демонстрация задачи
На главную: Предисловие

Вопросы

Задача

Учитывая следующий метод:

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, следуя инструкциям, указанным в коде.

Назад: Демонстрация задачи
На главную: Предисловие