Мой код выглядит примерно так: < /p>
Код: Выделить всё
#include
#include
#include
std::generator pascal_triangle()
{
std::vector current_row{1};
while (true)
{
co_yield current_row;
std::vector next_row;
next_row.reserve(current_row.size() + 1);
next_row.push_back(1);
for (const auto& [left_element, right_element] : std::views::pairwise(current_row))
{
next_row.push_back(left_element + right_element);
}
next_row.push_back(1);
current_row = std::move(next_row);
}
}
long choose(const int n, const int k)
{
// This line does not compile.
const std::vector row = std::ranges::next(pascal_triangle(), n);
return row[k];
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... dgenerator
Мобильная версия