0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 3
1

Ламинат или Количество способов замостить прямоугольник M*N прямоугольниками M*1 и 1*M

16.02.2020, 01:50. Показов 4275. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ламинат
Требуется замостить пол комнаты шириной N и длиной M с помощью N полос ламината размером 1xM. Самый простой способ укладки - N полос, одну возле одной. Однако, в разработанной игре можно укладывать полосы ламината как вдоль длины комнаты, так и вдоль ширины. При этом пилить или ломать полосы ламината нельзя. Также нельзя укладывать одну полосу поверх другой. Все полосы должны лежать на полу, не оставляя непокрытых мест. При таком подходе можно придумать много способов укладки ламината, например, для комнаты шириной 3 и длиной 2 существует 3 способа укладки. Для заданных M и N требуется определить количество допустимых способов укладки.
Формат входных данных
Входные данные состоят из одной строки, которая содержит два натуральных числа M и N (1 ≤ N ≤ 40, 2 ≤ M ≤ 10).
Формат результата
В качестве результата нужно записать одно число – количество допустимых способов укладки ламината.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
 
using namespace std;
int main()
{
 
    int n,m,k,res=0;
    cin>>m>>n;
    if(n<m)cout<<1;
    else {
    double K =n/m;
    k = (int) K;
    res= 1+k;
    for(int a = 1; a<=k; a++)
    {
        res+=(n-a*m)*a;
    }
cout<<res;
return 0;
}
}
проходит только 3 теста.
Пожалуйста, помогите решить и разобраться в алгоритме)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2020, 01:50
Ответы с готовыми решениями:

Количество способов замостить прямоугольник M*N прямоугольниками M*1 и 1*M
Добрый день! Подскажите пожалуйста, как решить данную задачу: Дан прямоугольник M*N. Нужно...

Подсчитать количество способов замостить шахматную доску доминошками
На шахматной доске,размером N*N клеток(2&lt;=N&lt;=8),подсчитать кол-во способов,которыми можно замостить...

Решить задачу "Паркет". Найти количество способов замостить эту площадь фигурами
Здравствуйте! Нужна помощь, нужно решить олимпиадную задачку по динамическому программированию по...

Как замостить текстурой прямоугольник?
Имеется уже созданная (скорее всего загруженная из файла) текстура на hdc1, она известного размера...

6
817 / 504 / 211
Регистрация: 19.01.2019
Сообщений: 1,196
16.02.2020, 04:14 2
...
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
16.02.2020, 06:19 3
Лучший ответ Сообщение было отмечено Kuzya31 как решение

Решение

C++
1
2
3
int f (int n, int m) { int r=1; for (int j=0; m+j<=n; j++) r += f(n-m-j, m); return r; }
 
int main() { int n, m; std::cin >> m >> n; std::cout << f(n, m); }
PS мемоизацию добавить по вкусу. Но при данных диапазонах аргументов и без нее норм.
2
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
16.02.2020, 10:22 4
_Ivana, специально ли так вырвиглазно написано, чтоб автор ничего не понял?
1
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
16.02.2020, 14:23 5
Каждый судит о мотивах других, исходя из своих.
Цитата Сообщение от ValeryS Посмотреть сообщение
у_Ivana своя логика, каждая строчка свой функциональный блок, тем более что он не только на Си пишет
ЗЫ переформатировать кота сможет любой.
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
17.02.2020, 13:56 6
_Ivana, да как бы ты ни любил "функциональные блоки"...
писать обфусцированные функции с именем f и переменной r, без комментариев и пояснений - это говнокод на любом языке/в любой парадигме программирования.
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
17.02.2020, 21:33 7
Конечно Лучше писать ноющие посты на форумах про чужой говнокод, когда сам ниасилил задачу

ЗЫ для справки, давным давно, много лет назад, у нас с вами состоялся нелицеприятный диалог, вследствие которого я сформировал о вас определенное мнение. С тех пор оно только укрепилось Поэтому вы можете продолжать задавать мне вопросы, высказывать свое мнение по поводу мотивов моих действий и качества моего кода, но, думаю, вы догадываетесь, как я к этому отношусь
0
17.02.2020, 21:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2020, 21:33
Помогаю со студенческими работами здесь

Замостить прямоугольник картинками 2х видов по схеме
как наиболее простым методом вывести рисунок на экран? (к примеру квадратную картинку 32х32 пкс) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru