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

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

Войти
Регистрация
Восстановить пароль
 
NoBodyIsPerfect
47 / 30 / 1
Регистрация: 11.06.2011
Сообщений: 206
#1

Построить стену из блоков - C++

12.11.2012, 21:18. Просмотров 457. Ответов 7
Метки нет (Все метки)

Всем привет, интересует в какую сторону думать алгоритм: есть четыре кубика длиной в 1, один длиной в 2 и один длиной в 3. Нужно построить из них стену высотой в 3 и шириной в 3, как то так:
C++
1
2
3
1 1 1
1 1 1
1 1 1
нашими строительными блоками это будет выглядеть так:
C++
1
2
3
3
1 2
1 1 1
Как можно программно проверить что хватит/не хватит данных блоков для стены 3x3?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 21:18     Построить стену из блоков
Посмотрите здесь:

API Vkontakte загрузка графики на стену - C++
похоже я злостно туплю ( проблема в сабже, на сайте вконтакта есть описание процесса 1. С помощью метода wall.getPhotoUploadServer...

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

Перестановка блоков матрицы - C++
1)Дано действительную квадратную матрицу порядка 2n. Получить новую матрицу, переставляя ее блоки розмером nxn рисунок и второе задание...

Перестановка блоков в матрице - C++
Переставить блоки в матрице. Функция написана просто на начальном этапе(объявление переменных и т.д), а вот код для самой перестановки не...

перестановка блоков матрицы - C++
надо обменять четверти матрицы по диагонали, с использованием двух массивов. вот часть кода t=(m)/2; k=(n)/2; for (i=0;i<m;i++) { ...

Подбор блоков в списке - C++
#include <iostream> #include <fstream> #include <locale.h> #include <stdio.h> using namespace std; struct Node { int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
Эксперт .NET
5882 / 4779 / 633
Регистрация: 10.07.2011
Сообщений: 14,399
Записей в блоге: 5
Завершенные тесты: 4
12.11.2012, 21:22     Построить стену из блоков #2
NoBodyIsPerfect, очевидно, создать вектор
C#
1
2
3
double vector[3];
for(int i = 0; i < 3; i++)
   vector[i] = 3;
в данном случае вектор
(3,3,3)T
ну а потом вычитаем. Начиная с самого большого блока. из 3 вычитаем 3 получаем 0, получаем вектор
(0,3,3)T
блоки по 3 кончились, после этого берем блоки по 2. вычитаем получаем.
(0,1,3)T
Остаются блоки по 1. Аналогично получаем
(0,0,3)T
И точно также получаем в результате (0,0,0). Если получаем - значит хватило, если не получаем - не хватило.
NoBodyIsPerfect
47 / 30 / 1
Регистрация: 11.06.2011
Сообщений: 206
12.11.2012, 21:37  [ТС]     Построить стену из блоков #3
а если лишние?
Psilon
Master of Orion
Эксперт .NET
5882 / 4779 / 633
Регистрация: 10.07.2011
Сообщений: 14,399
Записей в блоге: 5
Завершенные тесты: 4
12.11.2012, 21:41     Построить стену из блоков #4
NoBodyIsPerfect, ну можно проверить последний элемент массива блоков (самый мелкий), если там 0, значит более крупные точно растащили и все потратили, если не ноль - сами понимаете.
NoBodyIsPerfect
47 / 30 / 1
Регистрация: 11.06.2011
Сообщений: 206
12.11.2012, 21:45  [ТС]     Построить стену из блоков #5
забыл написать, еще можно расставить в разном порядке
Psilon
Master of Orion
Эксперт .NET
5882 / 4779 / 633
Регистрация: 10.07.2011
Сообщений: 14,399
Записей в блоге: 5
Завершенные тесты: 4
12.11.2012, 21:46     Построить стену из блоков #6
NoBodyIsPerfect, посчитайте возможно это или нет, если возможно, то количество комбинаций всего n!, где n - количество "этажей". Хотя если блоки вертикально тоже можно ставить, то задача сильно усложняется.
NoBodyIsPerfect
47 / 30 / 1
Регистрация: 11.06.2011
Сообщений: 206
12.11.2012, 22:25  [ТС]     Построить стену из блоков #7
можно ставить только горизонтально, про количество этажей не понял
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 22:32     Построить стену из блоков
Еще ссылки по теме:

Синтаксис и семантика блоков try… catch… - C++
Не могу понять что нужно написать

В одном из блоков switch не работает функция - C++
Доброго времени суток! Может кто может помочь, не знаю, что уже делать. Суть проблемы: В при choice =1 не работает блок &quot;case 1:...

Проверка при помощи вложенных блоков try - C++
Посчитать уравнение ( у=log4(x2-4)+1/x)при вводе х с клавиатуры, но должны выполнятся условия: 1. выражение считается в отдельной...

Арканоид. Алгоритм отбивания шара от блоков - C++
Всем привет. Пишу арканоид на С++ с помощью winapi. Уже доделал, но никак не могу придумать нормальный алгоритм отбивания шара от блоков. У...


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

Или воспользуйтесь поиском по форуму:
Psilon
Master of Orion
Эксперт .NET
5882 / 4779 / 633
Регистрация: 10.07.2011
Сообщений: 14,399
Записей в блоге: 5
Завершенные тесты: 4
12.11.2012, 22:32     Построить стену из блоков #8
NoBodyIsPerfect, ну тогда проверяете на возможность постройки, если есть такая возможность, то количество возможных вариантов (n+k)!, где n - размер вектора, k - количество комбинаций, с помощью которых можно заменить блоки исходной задачи. В данном случае k - самый сложный для подсчета параметр. Алгоритм примерно такой
1) определяем, можно ли построить
2) если можно, смотрим, остались ли лишние блоки
3) если остались, нужно посчитать их количество и количество комбинаций, по замене (то есть у нас например остался 1 блок размером 1, мы любой блок исходной задачи размером 1 можем на него поменять, значит количество комбинаций возрастает и получается равным X, где X - кол-во единичных блоков в полученной стенке.
Если же третий пункт не нужен (то есть лишних блоков никогда не остается) то все просто
1) определяем, можно ли построить
2) если можно то cout << "Количество необходимых блоков для постройки : "<< Fac(n) << endl;
Yandex
Объявления
12.11.2012, 22:32     Построить стену из блоков
Ответ Создать тему
Опции темы

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