Guest
Новичок
|
Выполнить задание, если задана последовательность целых чисел длиной n. 1. Определить в заданной последовательности целых чисел количество чисел Фибоначчи. 2. Получить: min (a1 + an, a2 + an-1, ..., an/2 + an/2+1).
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 14 нояб. 2005 9:40 | IP
|
|
miss_graffiti
Долгожитель
|
э.. что есть числа Фибоначчи? то ли я их с чем-то спутала, то ли задача странно сформулированна.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 14 нояб. 2005 22:16 | IP
|
|
VF
Administrator
|
ФИБОНАЧЧИ ЧИСЛА - элементы числовой последовательности 1, 1, 2, 3, 5, 8,... (ряда Фибоначчи, Fibonacci; 1202), в которых каждый последующий член равен сумме двух предыдущих.
|
Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 14 нояб. 2005 22:44 | IP
|
|
miss_graffiti
Долгожитель
|
значит, не перепутала. тогда- в чем проблема? if a[n]=a[n-1]+a[n-2] then S:=S+1 а для второй: min:=a[1]+a[n]; for i:=2 to n do begin if a{{i}}+a[n+1-i]<min then min:=a{{i}}+a[n+1-i]; *хотя что-то у меня сомнения, что правильно условие поняла.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 15 нояб. 2005 13:50 | IP
|
|
Dzen
Удален
|
Для первой ... var Data:array [1..n] of integer; a_n,a_n1:integer;{Два последовательных члена ряда} c:integer;{Вспомогательная переменная} Stop:boolean; ... a_n:=0;a_n1:=1; while Stop do begin c:=a_n1; a_n1:=a_n+a_n1; a_n:=c; Stop:=false; for j:=1 t n do begin if Data[j]=a_n+1 then S:=S+1; if Data[j]>then Stop:=true; end; end; Чуствуете принципиальную разницу между тем что делает 1 программа и эта? Гораздо более эффективным алгоритм можно сделать если данные находятся в списке.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 15 нояб. 2005 15:59 | IP
|
|
miss_graffiti
Долгожитель
|
и в чем принципиальное отличие? (положительное, разумеется. длину кода и количество переменных я и так могу оценить).
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 15 нояб. 2005 16:13 | IP
|
|
Dzen
Удален
|
Различие в том что твой алгоритм определяет сколько в массиве последовательных пар чисел Фибоначчи, а не сколько там чисел Фибоначи.
элементы числовой последовательности 1, 1, 2, 3, 5, 8
Некоторые числа входят в эту последовательность, а некоторые - нет Например 4 это не число Фибоначчи, а 5 - да. Таким образом в массиве 5,20,1,34,2,13,4,21 шесть чисел Фибоначчи (все кроме 20 и 4 ) Сколько их насчитает твой алгоритм? Р.S. Извиняюсь за корявость своей программы - просто написал самый грубый вариант который считает то что нужно. Конечно же массив перед поиском надо упорядочить по возрастанию и сам алгоритм сделать так чтобы при возрастании a_n соотв. повышалась нижняя граница j.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 16 нояб. 2005 13:39 | IP
|
|
miss_graffiti
Долгожитель
|
ага. значит, я задание не поняла. думала, что число Фибоначчи по условию - это именно то число, которое равно сумме двух предыдущих в данной последовательности. мой алгоритм ищет именно такие числа...
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 16 нояб. 2005 19:10 | IP
|
|
|