Кузнечик сидит в точке 0. Будем считать, что количество как попасть в точку ноль - 1.
У нас всего 6 кочек, 6 - конечная. Мы перемещаемся либо на последующую (+1), либо через одну (+2), либо через две (+3). То есть если мы были на кочке один и прыгнули через две кочки, то попадем в кочку 4 (1 + 3).
Начнём считать. 0 - мы на первом берегу. Наши кочки: 1, 2, 3, 4, 5 и 6 обозначены СЛЕВА. 7 этапом мы прыгнем на другой берег.
Всего существует как перебрать на другой берег болота.
P.S. В квадратных скобка [] обозначены индексы из каких точек мы можем попасть в эту точку. Достаточно сложить количество путей тех точек и мы получим количество путей для данной точки.
Итак, целевой язык - C++. Это значит мы - радостные обладатели технологии потоков, с коей мы будем производить весь ввод/вывод как при работе с файлами, так и при работе со стандартным вводом/выводом (консолью).
Ну а раз уж мы работаем с потоками, то будем делать это красивенько: создадим класс-обёртку для потока ввода, цель которого - поиск в этом потоке цитат и отправка их на поток вывода (который мы передаём).
[!] Стоит отметить, что по заданию не сказано, что есть разница между ' и ". Поэтому будем считать их одинаковыми.
[!] Внимание! Рядом с исполняемым файлом надо создать текстовый файл data.txt c текстом и цитатами.
Код
С++11
#include <iostream>#include <fstream>using std::cout;class QuotesFinder { std::istream &in_stream; bool is_it_in_quote = false;public: QuotesFinder() = delete; QuotesFinder(QuotesFinder&&) = default; QuotesFinder(QuotesFinder const&) = default; explicit QuotesFinder(std::istream &is) : in_stream(is) {} [[nodiscard]] bool eof() const { return in_stream.eof(); } // Вот тут происходит вся магия QuotesFinder& operator >> (std::ostream& out_stream) { char buffer; in_stream.get(buffer); //Получаем очередной символ из потока if (buffer == '\"' || buffer == '\'') { if (is_it_in_quote) { is_it_in_quote = false; out_stream << buffer; out_stream << "\n"; return *this; } is_it_in_quote = true; } if (is_it_in_quote) { out_stream << buffer; } return *this; }};int main() { std::ifstream file("data.txt"); // Открываем файл if (!file.is_open()) { cout << "File is not exits!"; return 1; } QuotesFinder finder(file); // Создаём обёртку из файлового потока while (!finder.eof()) // Пока не достигли конца потока finder >> cout; // переправляем очередной кусок информации в поток вывода}
У нас всего 6 кочек, 6 - конечная.
Мы перемещаемся либо на последующую (+1), либо через одну (+2), либо через две (+3). То есть если мы были на кочке один и прыгнули через две кочки, то попадем в кочку 4 (1 + 3).
Начнём считать.
0 - мы на первом берегу. Наши кочки: 1, 2, 3, 4, 5 и 6 обозначены СЛЕВА. 7 этапом мы прыгнем на другой берег.
1: [0] = 1 сп.
2: [0,1] = 1 + 1 = 2 сп.
3: [0,1, 2] = 1 + 1 + 2 = 4 сп.
4: [1, 2, 3] = 1 + 2 + 4 = 7 сп.
5: [2, 3, 4] = 2 + 4 + 7 = 13 сп.
6: [3, 4, 5] = 4 + 7 + 13 = 24 сп.
7: [4, 5, 6] = 7 + 13 + 24 = 44 сп.
Всего существует как перебрать на другой берег болота.
P.S. В квадратных скобка [] обозначены индексы из каких точек мы можем попасть в эту точку. Достаточно сложить количество путей тех точек и мы получим количество путей для данной точки.
Итак, целевой язык - C++. Это значит мы - радостные обладатели технологии потоков, с коей мы будем производить весь ввод/вывод как при работе с файлами, так и при работе со стандартным вводом/выводом (консолью).
Ну а раз уж мы работаем с потоками, то будем делать это красивенько: создадим класс-обёртку для потока ввода, цель которого - поиск в этом потоке цитат и отправка их на поток вывода (который мы передаём).
[!] Стоит отметить, что по заданию не сказано, что есть разница между ' и ". Поэтому будем считать их одинаковыми.
[!] Внимание! Рядом с исполняемым файлом надо создать текстовый файл data.txt c текстом и цитатами.
КодС++11
#include <iostream>#include <fstream>using std::cout;class QuotesFinder { std::istream &in_stream; bool is_it_in_quote = false;public: QuotesFinder() = delete; QuotesFinder(QuotesFinder&&) = default; QuotesFinder(QuotesFinder const&) = default; explicit QuotesFinder(std::istream &is) : in_stream(is) {} [[nodiscard]] bool eof() const { return in_stream.eof(); } // Вот тут происходит вся магия QuotesFinder& operator >> (std::ostream& out_stream) { char buffer; in_stream.get(buffer); //Получаем очередной символ из потока if (buffer == '\"' || buffer == '\'') { if (is_it_in_quote) { is_it_in_quote = false; out_stream << buffer; out_stream << "\n"; return *this; } is_it_in_quote = true; } if (is_it_in_quote) { out_stream << buffer; } return *this; }};int main() { std::ifstream file("data.txt"); // Открываем файл if (!file.is_open()) { cout << "File is not exits!"; return 1; } QuotesFinder finder(file); // Создаём обёртку из файлового потока while (!finder.eof()) // Пока не достигли конца потока finder >> cout; // переправляем очередной кусок информации в поток вывода}