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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2010, 15:29   #1
Алька2206
 
Регистрация: 08.10.2010
Сообщений: 7
По умолчанию определить количество способов

нужно написать программу на Delphi, которая определяет количество способов выложить пол 4х10 плиткой размером 1х2.
Желательно сделать с помощью чисел Фибоначчи, но каким образом, не знаю. Да и если даже делать перебором, не пойму как это сделать.
Заранее спасибо )
Алька2206 вне форума Ответить с цитированием
Старый 08.10.2010, 21:39   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

размер и число вариантов
(1,2) =1
(2,2) =2
(3,2) =3
(4,2) =5
(4,3) =8
...........
продолжаем, замечаем закономерность, доказываем ее, получаем ответ.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 09.10.2010, 21:15   #3
Алька2206
 
Регистрация: 08.10.2010
Сообщений: 7
По умолчанию

если продолжить, получается что если квадрат 4х4, то количество способов 13.. но их гораздо больше, я проверяла.
такое соотношение верно для прямоугольников 2хN, где количество способов равно N-му номеру чисел Фибоначчи
Алька2206 вне форума Ответить с цитированием
Старый 09.10.2010, 21:49   #4
vlad_light
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 95
По умолчанию

У нас прямоугольник 4х10, что эквивалентно двум 2х10. Назовём н-ое число последовательности Фибоначчи F(n) Тогда кол-во вариантов для одного прямоугольника равно F(10), поскольку его размер равен 2х10. Для второго прямоугольника - аналогично. Теперь зафиксируем один способ расстановки в 1-ом прямоугольнике, а во втором переберём все возможные варианты. Тоже самое проделаем для второго, третьего и т. д. В итоге у нас получится F(n) вариантов выбора для 1-ого прямоугольника по F(n) вариантов размещения второго. Ответ: F(n)*F(n)=F(n)^2.
vlad_light вне форума Ответить с цитированием
Старый 09.10.2010, 23:23   #5
Алька2206
 
Регистрация: 08.10.2010
Сообщений: 7
По умолчанию

все равно это будет не все количество вариантов. вы поделили прямоугольник на два вертикальных, а можно также выделить один прямоугольник 2х10 посередине, тогда по бокам останутся два прямоугольника 1х10. И некоторые из этих вариантов не входят в число тех, про которые говорите вы.
получается, количество F[10]^2+F[10], но как учесть повторяющиеся и, следовательно, избавиться от них?
Алька2206 вне форума Ответить с цитированием
Старый 10.10.2010, 14:06   #6
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Рассмотрим 3 случая на краю:
tile.png
Количество способов для случая t размера x (x - длина части шириной 4).
Код:
f(x, 0) = f(x - 1, 1) + f(x - 2, 2) + f(x - 2, 1) + f(x - 2, 0);
f(x, 1) = f(x, 0) + f(x - 1, 1);
f(x, 2) = f(x, 0) + f(x - 2, 2);
Для 4×4 будет 36 вариантов - проверено вручную.

О, нашёл:
http://oeis.org/classic/b005178.txt
Последовательность A005178
a(n)=a(n-1)+5a(n-2)+a(n-3)-a(n-4)

Последний раз редактировалось Somebody; 10.10.2010 в 14:08.
Somebody вне форума Ответить с цитированием
Старый 24.10.2010, 19:40   #7
Алька2206
 
Регистрация: 08.10.2010
Сообщений: 7
По умолчанию

спасибо, но может кто-то сможет помочь с выводом формулы через производящую функцию? буду очень признательна.
Алька2206 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить количество букв bratello41 Паскаль, Turbo Pascal, PascalABC.NET 3 23.06.2010 15:23
определить количество букв в предложении bratello41 Паскаль, Turbo Pascal, PascalABC.NET 1 12.06.2010 09:31
Определить количество тары Ehha1234 Общие вопросы C/C++ 1 03.06.2010 23:19
Определить количество вхождений строки S1 в строку S2 Berckyt Microsoft Office Word 5 16.03.2009 00:27
Возможно ли определить количество акаунтов Windows bayern JavaScript, Ajax 1 22.09.2007 22:46