Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
#1

Найти минимальное количество плиток, которыми нужно покрыть пол - C++

04.12.2012, 23:12. Просмотров 374. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста с задачкой. Дана плошадь комнаты WxH и размеры кафеля A x B. Нужно найти минимальное количество плиток которыми нужно покрыть пол. Класть плитки нужно так, чтобы одна сторона плитки граничала максимум с одной плиткой и была параллельна одной из сторон комнаты. Поворачивать плитку нельзя, но резать вдоль одной из сторон можно, также разрезанный кусок можно разрезать на мелкие кусочки. Помогите пожалуйста.
Вот мой код, но не знаю где ошибка:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
 
using namespace std;
 
int main ()
{
    int w, h, w1, h1, a, b, k = 0, p, p1;
    cin >> w >> h >> a >> b;
    w1 = w % a; h1 = h % b;
    k = (w / a) * (h / b);
    if(w1 == 0 && h1 == 0) {
        cout << k << endl;
        return 0;
    }
    else if(w1 == 0 && h1 != 0) {
        p = w % ((a * b) / h1);
        if(p != 0)
            k++;
        k += w / ((a * b) / h1);
        cout << k << endl;
        return 0;
    }
    else if(w1 != 0 && h1 == 0) {
        p = h % ((a * b) / w1);
        if(p != 0)
            k++;
        k += h / ((a * b) / w1);
        cout << k << endl;
        return 0;
    }
    else if(w1 != 0 && h1 != 0) {
        p = w % ((a * (b / h1))); k += w / ((a * (b / h1)));
        if(p != 0)
            k++;
        k += h / ((b * (a / w1)));
        if(h < ((b * (a / w1)))) k++;
        cout << k << endl;
        return 0;
    }
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 23:12     Найти минимальное количество плиток, которыми нужно покрыть пол
Посмотрите здесь:

Определить количество плиток, чтобы замостить пол - C++
Для того, чтобы замостить пол прямоугольной комнаты размерами AxB мастера решили приобрести квадратные плитки со стороной C. В магазине...

Определить минимальное или максимальное количество актеров, с которыми режиссер должен переговорить - C++
В театре работает n актеров. Известно, что среди них a – высоких, b – голубоглазых и с – блондинов. Для главной роли в новом спектакле...

Найти в серии показаний минимальное произведение двух показаний, между которыми прошло не менее 6 минут - C++
Добрый день, задали по информатике на днях решить следующую задачу: На спутнике «Фотон» установлен прибор, предназначенный для...

Найти количество расположенных последовательно положительных элементов, которыми заканчивается массив - C++
Выясните количество расположенных последовательно положительных элементов, которыми заканчивается линейный массив.

Определить количество плиток попадающих внутрь круга - C++
Лич Сандро проводит свои научные исследования в магии огня. Сандро стоит в центре огромного квадратного зала площадью миллион квадратных...

Количество плиток, которое можно уложить на заданную площадь - C++
Написать программу, вычисляющую количество плиток, которое можно уложить на заданную площадь Вводимые данные: а, b – размеры пола; ...

Определить количество способов укладки плиток на оставшиеся места - C++
Задача G. Укладка плитки (Время: 1 сек. Память: 16 Мб Баллы: 100) В процессе ремонта в Лаборатории Информационных Технологий строителям...

Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром - C++
Здравствуйте, помогите пожалуйсто, был бы очень признателен хотя бы за идею решения(поидеи методом ветвей и границ она решается) ...

в каждой строке нужно найти минимальное слово - C++
у меня дан код программы не могу его дописать на С задача такова даны строки в каждой строке нужно найти минимальное слово длиной и...

Какое минимальное количество спичек нужно для того, чтобы построить в пространстве N кубов со стороной в одну спичку - C++
Какое минимальное количество спичек нужно для того, чтобы выложить на плоскости N квадратов со стороной в одну спичку? Какое...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
15.12.2012, 15:40  [ТС]     Найти минимальное количество плиток, которыми нужно покрыть пол #2
up up
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2012, 18:29     Найти минимальное количество плиток, которыми нужно покрыть пол #3
Контрпример:
7 5 3 2
правильный ответ: 6
У Вас выдает: 7.

Кстати если поменять местами входные данные, вот такой тест: 5 7 2 3, то Ваш код выдает правильный ответ.
vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
16.12.2012, 14:43  [ТС]     Найти минимальное количество плиток, которыми нужно покрыть пол #4
Спасибо, можете исправить ошибку в моем коде??, а то я уже почти 2 недели несколько раз набирал новый код, никак не получается((. Исправляю в одном месте, получается ошибка в другом...(
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
16.12.2012, 18:37     Найти минимальное количество плиток, которыми нужно покрыть пол #5
Попробуйте вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
 
using namespace std;
 
int main ()
{
    int w, h, w1, h1, a, b, k = 0;
    cin >> w >> h >> a >> b;
    w1 = w % a; h1 = h % b;
    k = (w / a) * (h / b);
    if(w1 == 0 && h1 == 0) {
        cout << k << endl;
        return 0;
    }
    else if(w1 == 0 && h1 != 0) {
        while(w>0)
        {
            k++;
            w-=(b/h1)*a;
        }
        cout << k << endl;
        return 0;
    }
    else if(w1 != 0 && h1 == 0) {
        while(h>0)
        {
            k++;
            h-=(a/w1)*b;
        }        
        cout << k << endl;
        return 0;
    }
    else if(w1 != 0 && h1 != 0) {
        int W=w, H=h, t1=0, t2=0;
        while(W>0)
        {
            t1++;
            W-=(b/h1)*a;
        }       
        H-=h1;
        while(H>0)
        {
            t1++;
            H-=(a/w1)*b;
        }    
        W=w; H=h;
        while(H>0)
        {
            t2++;
            H-=(a/w1)*b;
        }       
        W-=w1;
        while(W>0)
        {
            t2++;
            W-=(b/h1)*a;
        }  
        if(t1<t2)
            k+=t1;
        else
            k+=t2;
        cout << k << endl;
        return 0;
    }
return 0;
}
vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
16.12.2012, 18:49  [ТС]     Найти минимальное количество плиток, которыми нужно покрыть пол #6
Спасибо!!))
Yandex
Объявления
16.12.2012, 18:49     Найти минимальное количество плиток, которыми нужно покрыть пол
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru