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

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

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

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

04.12.2012, 23:12. Просмотров 380. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 23:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти минимальное количество плиток, которыми нужно покрыть пол (C++):

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

Определить минимальное количество отрезков единичной длины необходимых для того чтоб покрыть все точки - C++
И снова здравствуйте.Условие:даны N точек с двойной точностью(точки заданные вещественными числами ). Определить минимальное количество...

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

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

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

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

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

Кстати если поменять местами входные данные, вот такой тест: 5 7 2 3, то Ваш код выдает правильный ответ.
1
vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
16.12.2012, 14:43  [ТС] #4
Спасибо, можете исправить ошибку в моем коде??, а то я уже почти 2 недели несколько раз набирал новый код, никак не получается((. Исправляю в одном месте, получается ошибка в другом...(
0
valeriikozlov
Эксперт C++
4670 / 2496 / 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;
}
1
vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
16.12.2012, 18:49  [ТС] #6
Спасибо!!))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 18:49
Привет! Вот еще темы с ответами:

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

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

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

Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром - C++
Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром например: ввод aziz ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.12.2012, 18:49
Ответ Создать тему
Опции темы

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