Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 13:33   #1
POCOMAXA
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 17
По умолчанию Последовательность

Рассмотрим числовую последовательность, первоначально состоящую из двух
единиц: 1, 1. Далее на каждом последующем шаге будем вставлять между
соседними элементами их сумму. В примере добавляемые элементы выделены.
Которая выведет последовательность за К шагов.
Можно на псевдокоде
Изображения
Тип файла: jpg задачи и решения, сборник-3, олимпиадные задачи.jpg (13.2 Кб, 113 просмотров)
POCOMAXA вне форума Ответить с цитированием
Старый 25.05.2013, 14:02   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Которая выведет последовательность за К шагов.
Моя твоя понимай совсем нет.

Код:
void print_subsequence(int from, int to, int depth){
  if(depth == 0) {printf("%d, ", from); return;}
  print_subsequence(from, from+to, depth-1);
  return print_subsequence(from+to, to, depth-1);
}

void print_sequence(int depth){
  print_subsequence(1, 1, depth);
  prinf("1");
}
Abstraction вне форума Ответить с цитированием
Старый 25.05.2013, 14:59   #3
POCOMAXA
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение

Код:
void print_subsequence(int from, int to, int depth){
  if(depth == 0) {printf("%d, ", from); return;}
  print_subsequence(from, from+to, depth-1);
  return print_subsequence(from+to, to, depth-1);
}

void print_sequence(int depth){
  print_subsequence(1, 1, depth);
  prinf("1");
}
а как на паскаль или делфи переделать?
POCOMAXA вне форума Ответить с цитированием
Старый 25.05.2013, 15:08   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
а как на паскаль или делфи переделать?
Понятия не имею: не пишу ни на Pascal, ни на Delphi. Решение задачи, изложенной в первом сообщении темы (как я это задание понял) - приведено. На всякие экзотические языки программирования предоставляю Вам перевести самостоятельно.
Abstraction вне форума Ответить с цитированием
Старый 25.05.2013, 15:36   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

В лоб :
Код:
var
        a, b : array [1..100] of Integer;
        m, n, count, i, j, k : Integer;

begin
        ReadLn (m);

        a[1] := 1;
        a[2] := 1;
        n := 2;

        for i := 1 to m do begin
                FillChar (b, SizeOf(b), 0);
                count := 1;
                for j := 1 to n-1 do begin
                        b[count] := a[j];
                        b[count+1] := a[j] + a[j+1];
                        Inc (count, 2)
                end;
                b[count] := a[n];

                FillChar (a, SizeOf(a), 0);

                n := count;
                a := b;

                for k := 1 to n do
                        Write (a[k],  ' ');
                WriteLn
        end;

end.
Poma][a вне форума Ответить с цитированием
Старый 25.05.2013, 17:23   #6
POCOMAXA
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 17
По умолчанию

спасибо. я его немного переделал для делфи и все ок.
POCOMAXA вне форума Ответить с цитированием
Старый 25.05.2013, 18:31   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Так же некоторые соображения.. :
В N-ой строке будет 2^n + 1 цифр.
Причем первые 2^(n-1) символов являются зеркальным отображением последних 2^(n-1) символов. А между ними стоит цифирка (но это для N-ой строки, где N > 0)

Поэтому можно отображать 2-ую часть последовательности, но не знаю, даст ли это нам выигрыш в эффективности.

Так же мне очень не нравится ситуация с 2-мя массивами. Как от них избавиться идей нет..

Последний раз редактировалось Poma][a; 25.05.2013 в 18:33.
Poma][a вне форума Ответить с цитированием
Старый 25.05.2013, 21:27   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Так же мне очень не нравится ситуация с 2-мя массивами. Как от них избавиться идей нет..
Можете посмотреть на моё решение. Оно использует памяти всего O(K), а не O(2^K).
Abstraction вне форума Ответить с цитированием
Старый 25.05.2013, 21:49   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,323
По умолчанию

Код:
(с) Abstraction
procedure print_subsequence(from, to1, depth: integer);
begin
  if depth = 0 then
  begin
    write(from, ', ');
    exit;
  end;
  print_subsequence(from, from+to1, depth-1);
  print_subsequence(from+to1, to1, depth-1);
end;
 
procedure print_sequence(depth: integer);
begin
  print_subsequence(1, 1, depth);
  write('1');
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.05.2013, 21:51   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Abstraction, спасибо! Сейчас глянем!
BDA, спасибо, а то я уже было начал искать FCEditor, чтобы разобраться по блок-схеме.


UPD 21:55
Это гениально!!! Но я не понимаю, как это работает

UPD 22:00
Я правильно понимаю что строки :
Цитата:
Код:
print_subsequence(from, from+to1, depth-1);
  print_subsequence(from+to1, to1, depth-1);
создают строки, одна из которых является зеркальным отображением 2-ой?

Последний раз редактировалось Poma][a; 25.05.2013 в 22:01.
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последовательность Dolbak2000 Паскаль, Turbo Pascal, PascalABC.NET 4 23.12.2011 03:13
последовательность Екатерина Воробей Паскаль, Turbo Pascal, PascalABC.NET 4 04.10.2011 14:37
последовательность zhenya.ya Помощь студентам 1 14.03.2010 22:48