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

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

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

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

04.12.2012, 23:12. Просмотров 354. Ответов 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++
C++ Какое минимальное количество спичек нужно для того, чтобы построить в пространстве N кубов со стороной в одну спичку
Количество плиток, которое можно уложить на заданную площадь C++
C++ Найти минимальное количество пересадок между двумя городами
C++ Определить минимальное или максимальное количество актеров, с которыми режиссер должен переговорить
C++ Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром
Наследство. Найти минимальное и максимальное возможное общее количество медальонов C++
Найти минимальное количество купюр для оплаты суммы C++
Определить количество способов укладки плиток на оставшиеся места C++
Определить количество плиток, чтобы замостить пол C++
Найти количество расположенных последовательно положительных элементов, которыми заканчивается массив C++
Определить количество плиток попадающих внутрь круга C++

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

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

Кстати если поменять местами входные данные, вот такой тест: 5 7 2 3, то Ваш код выдает правильный ответ.
vizapromo
 Аватар для vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
16.12.2012, 14:43  [ТС]     Найти минимальное количество плиток, которыми нужно покрыть пол #4
Спасибо, можете исправить ошибку в моем коде??, а то я уже почти 2 недели несколько раз набирал новый код, никак не получается((. Исправляю в одном месте, получается ошибка в другом...(
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 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
 Аватар для vizapromo
18 / 11 / 1
Регистрация: 04.12.2012
Сообщений: 51
16.12.2012, 18:49  [ТС]     Найти минимальное количество плиток, которыми нужно покрыть пол #6
Спасибо!!))
Yandex
Объявления
16.12.2012, 18:49     Найти минимальное количество плиток, которыми нужно покрыть пол
Ответ Создать тему
Опции темы

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