#include #include // Ex1 : Да се напише функция, която генерира всички двоични числа от 1 до n, използвайки опашка. void ex1() { unsigned max = 0; std::cin >> max; std::queue numbers, output; numbers.push(1); uint first; for (unsigned i = 0; i < max; i++) { first = numbers.front(); numbers.pop(); output.push(first); numbers.push(first * 10); numbers.push(first * 10 + 1); } while (output.size() > 0) { std::cout << output.front() << " "; output.pop(); } } // Ex2: Конче стои върху шахматна дъска NxN. За начална и крайна позиция да се изведе с колко най - малко хода можем да стигнем от началната до крайната. void ex2() { } // Ex3: Даден е масив от цели числа. Представяме си, че имаме прозорец с дължина k който се движи отляво надясно. Единственото което можем да видим са числата в прозореца. Да се изведе максимумът на всеки такъв прозорец. void ex3() { int numbers[] = {1, 3, -1, -3, 5, 3, 6, 7}; int numLen = 8; int k = 3; std::queue window; std::deque maxes; maxes.push_front(numbers[0]); for (unsigned i = 0; i < k; i++) { window.push(numbers[i]); if (numbers[i] > maxes.front()) { maxes.pop_front(); maxes.push_front(numbers[i]); } } for (unsigned i = k; i < numLen; i++) { window.pop(); window.push(numbers[i]); maxes.push_back((numbers[i] > maxes.back()) ? numbers[i] : maxes.back()); } while(!maxes.empty()) { std::cout << maxes.front() << " "; maxes.pop_front(); } } int main() { ex3(); }