пятница, 20 мая 2011 г.

Красотищща!

Задача: написать программу на языке Си (вариант ANSI C, или C89), которая выводит стандартный ввод в стандартный вывод в обратном порядке символов с использованием только функций getchar() и putchar() из стандартной библиотеки, не более O(n) памяти и O(n) времени, где n — длина входа. (Подсказка: программа может состоять из одной функции.)
------
Решение:

#include  <stdio.h>
main() {
    int ch = getchar();


    if (EOF != ch) {
        main();
        putchar(ch);
    }
    return 0;
}
все - по ссылке.

4 комментария:

  1. А будет работать при превышении стека?

    ОтветитьУдалить
  2. Если памяти не хватает, то ее и так не хватает. Какая разница?
    Для таких задач предполагается, что место для последовательности длины n есть. Более того, есть 2n места:)

    ОтветитьУдалить
  3. А не более безопасно будет использовать какой-нибудь стек, например, из STL?

    ОтветитьУдалить
  4. А какая разница? Принципиальной нет, с точки зрения самого решения.

    ОтветитьУдалить

Спутник взлетает. Первая ступень отработала.

 И, кажется, неплохо: Посмотрим, что будет когда отработает вторая.