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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.65
Gr1f0n
1 / 1 / 0
Регистрация: 05.09.2009
Сообщений: 10
#1

Задача про слона 0о - C++

14.09.2009, 16:21. Просмотров 3247. Ответов 31
Метки нет (Все метки)

Нам задали прикольную задачу.
От пункта А до пункта Б 12км.
На каждом километре есть склад.
Склады заполнены бананами(кол-во произвольное т.е. рандом или введено с клавы).
Из пункта А в пункт Б движется Слон.
У слона есть корзина, в которую помещается 6 бананов.
Слон на каждом километре съедает по 1 банану.
Нужно перенести все бананы из складов в пункт Б.
Бананы слон может как брать со склада так и класть по дороге на черный день =)

(Побочный вопрос! Что курил наш преподаватель? )


Или как можно больше хотя бы...

Добавлено через 1 минуту
Кстати мы еще только знаем:
Циклы
Массивы
Строки
Условие Иф
собственно все =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2009, 16:21     Задача про слона 0о
Посмотрите здесь:

задача про массивы C++
Задача про матрицу C++
C++ Задача про кузнечиков
C++ Задача про синусоиду
C++ Задача про год
Задача про Лестницу C++
C++ Задача про биты
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
14.09.2009, 17:42     Задача про слона 0о #2
В чем собсно вопрос? Узнать сколько бананов донес слон?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
14.09.2009, 18:09     Задача про слона 0о #3
Цитата Сообщение от Gr1f0n Посмотреть сообщение
Нужно перенести все бананы из складов в пункт Б.
Решения в принципе нет, т.к.
Цитата Сообщение от Gr1f0n Посмотреть сообщение
Слон на каждом километре съедает по 1 банану.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
14.09.2009, 18:27     Задача про слона 0о #4
Цитата Сообщение от easybudda Посмотреть сообщение
Решения в принципе нет, т.к.
ты не прав. перечитай внимательней условие задачи.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
14.09.2009, 18:58     Задача про слона 0о #5
Задача нормальная, кстати, только автор условие неправильно до нас донёс.

...При таком условии слон вряд ли донесёт все бананы до конца, ибо смотри. (То есть, если я правильно понял, съеденый банан съеден безвозвратно)

Допустим, выпала такая сумма бананов, что в общей сложности их штук 38.
Донесёт ли их слон? Нет. Ибо съест максимум 12, да 6 уместится в корзину, итого 38- (6+ 12)= 20
12 бананов осталось на дороге. Задаче то есть не решена.

Значит, в условие надо добавить: слон может возвращаться чтобы... уничтожать бананы, скажем так. По одному за километр. Так решаемо, но... неинтересно.

Ибо имеем на трассе 30 бананов, слон тупо прошёлся по трассе туда-сюда сколько-то там раз, сожрал 24 банана, да 6 положил в корзину. Тоже ничего интересного. Ну, то есть.Каждый элемент километр, его значение- количество бананов на этом километре

int trasssa [2, 0, 5, 1, 1, 3, 9, 4, 2, 3, 0, 1]

Решается банально, циклом проходим туда-сюда, каждый раз отнимая от каждого элемента (кроме нулевых) по единице, и не забыть за раз шесть отнять (можн сразу от суммы всех элементов отнять), положив в корзину. Когда сумма всех элементов становится равной нулю, бодренько идём на последний цикл (i==0), доходим до конца и говори, что бананов на трассе нет, все в корзине или съедены.

Но всё кардинально меняется, если за проход каждого километра слон обязан либо съесть банан, либо класть его в корзину. Не то, что: что хочет, то и делает, а именно так.
Вот это уже совсем другой коленкор.
...Так. а тогда задача не будет иметь решение при таком начальном раскладе

int trasssa [0, 0, 0, 0, 0, 0, 0, 4, 2, 3, 0, 1, ]

...Смотрите, даж если предположить, что изачально у слона в корзине уже есть 6 бананов, он всё равно не пройдёт трассу. Пройдёт то есть 6 километров, а седьмой не сможет- бананов нет уже. Ни в корзине, ни на километре.

Посему, после долгих размышлений я пришёл к выводу, что на каждом километре в начале пути обязан быть хотя бы один банан. И для простоты- пустая корзина.

int trasssa [4, 7, 5, 1, 1, 3, 9, 4, 2, 3, 8, 1];

Окончательное условие.
Есть трасса в 12 километров, посередине каждой трассы склад с бананами, бананов на кажлдом скаледе ненулевое число.
Имеется слон с корзиной, изначально в ней ноль бананов. Он проходит трассу на каждом километре убирая со склада один банан: либо съедая, либо кладя в корзину. Можно ходить в двух направлениях.
Требуется составить программу прохождения слоном всей трассы.

...А теперь я расскажу алгортм, кторый нужно реализовать, чтобы вы поняли, что всё выше сказанное не бред сивой кобылы.
Алгоритм такой: в цикле рассматриваем все числа массива. Первое число 4, в корзине ноль бананов (int korzina= 0) иммитируем проход слона туда обратно два раза. После этого

int trassa [0]== 0;
int korzina==4;

То есть первый склад мы опорожнили, корзину наполнили (это для примера, слон может съесть сколько-то бананов, тогда после первого километр (после первого числа) расклад будет, например, таким:

int trassa [0]== 0;
int korzina==0

Понятно что в конце каждого прохода в цикле int trassa [i]==0

Так вот. Алгоритм изменения чисел trassa [i] и korzina должен быть таков, что по окончании каждого тела цикла должно быть так:

korzina!= 0
А потому, что слон не знает и мы не зхнаем заранее числа.
И если последнее число будет 2 а в корзине перед ним 0 бананов, ну то естьтак

int trassa [11]== 2;
int korzina==0;

То слон трассу не прошёл.

Повторюсь: раз мы не знаем заранее trassa [11], дабы исключить последнюю описаную ситуацию, алгоритм надо так составить, что бы по окончании каждого цикла в корзине находилось ненулевое количество бананов.

Добавлено через 13 минут
Там я с ситаксисом объявления массива намудрил. И ещё: первоначально в корзине должен быть хотя бы один банан.
Иначе при таком раскладе

int trasssa [12]= {2, 7, 5, 1, ..., ..., };

не будет пройден даже первый километр.
БурундукЪ
 Аватар для БурундукЪ
9531 / 2528 / 66
Регистрация: 17.02.2009
Сообщений: 10,364
14.09.2009, 19:06     Задача про слона 0о #6
Цитата Сообщение от kravam Посмотреть сообщение
первоначально в корзине должен быть хотя бы один банан.
а если на нулевом километре, т.е. в точке А тоже склад? тогда складов 13, и банан тогда можно на складе взять
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
14.09.2009, 19:19     Задача про слона 0о #7
Усложнить задачу можно, безусловно, интереса ради. Но не так. Ибо нужно ещё оговорить правила взятия бананов с нулевого склада.
Со всех остальных складов правила просты.

Прошёл километр номер такой-то и со соответствующего склада либо взял банан либо не взял.
А с нулевого как брать?
...То есть кто хочет, пусть усложняет условие. Но за усложнением не должен быть сумбур, как у нашего уважаемого Gr1f0n.
БурундукЪ
 Аватар для БурундукЪ
9531 / 2528 / 66
Регистрация: 17.02.2009
Сообщений: 10,364
14.09.2009, 19:30     Задача про слона 0о #8
kravam, это не для усложнения, а для того чтобы слон на 1м же км от голода не сдох. )))
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 19:43     Задача про слона 0о #9
Предлагаю такой вариант:
Есть 12 км, 13 складов. Слон стоит в пункте A возле склада с пустой корзиной.
После прохождения каждого километра слон должен съесть один банан или умрет с голоду.
В корзину помещается до 6 бананов.
На склад входит неограниченное кол-во бананов.
Слон может класть бананы на склад, брать банан со склада, есть банан из корзины, есть банан со склада.
Кол-во бананов на складах задается случайно от 0 до 100.
Задача: Указать посл-ть действий слона чтобы переместить максимальное кол-во бананов на склад в пункте Б.
Или ответ - "СЛОН УМЕР ОТ ГОЛОДА".

Добавлено через 2 минуты
IMHO в такой трактовке задача достаточно однозначна.

Добавлено через 1 минуту
Если задать условие, что на складе изначально имеется от 1 до 100 бананов, тогда очевидно что имеется решение и слон не умрет от голода
reich
 Аватар для reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
14.09.2009, 23:03     Задача про слона 0о #10
Я думал иначе...
Есть склады, в каждом некое количество бананов. Слон идет с корзиной. Проверяем, сколько бананов на складе, если много и корзина пустая, то кладем бананы в корзину и один в рот, иначе только в рот. Если бананов мало, то смотрим на их количество в корзине и или докладываем в корзину или кушаем. И так ходить из А в Б, пока не закончатся бананы на последнем складе. И тогда мы подсчитываем, сколько бананов сьел слон и сколько принес в пункт Б.
Sov3117
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 10
15.09.2009, 03:11     Задача про слона 0о #11
Цитата Сообщение от odip Посмотреть сообщение
На склад входит неограниченное кол-во бананов.
наверно на склад нельзя ложить более 99 бананов (или ещё лучше того кол-ва которое сгенерируется)
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
15.09.2009, 03:29     Задача про слона 0о #12
На склад нельзя ничего ложить потому, что на склад ничего нельзя ложить НИКОГДА!
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 08:33     Задача про слона 0о #13
наверно на склад нельзя ложить более 99 бананов
Так неинтересно - тогда слон принесет мало бананов
reich
 Аватар для reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
15.09.2009, 10:15     Задача про слона 0о #14
Цитата Сообщение от odip Посмотреть сообщение
Так неинтересно - тогда слон принесет мало бананов
за один проход будет 12 скушаных и 6 в корзине...

У кого-то есть нормальное и корректное условие?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
15.09.2009, 12:15     Задача про слона 0о #15
Цитата Сообщение от kravam Посмотреть сообщение
Окончательное условие.
Есть трасса в 12 километров, посередине каждой трассы склад с бананами, бананов на каждом складе ненулевое число.
Имеется слон с корзиной, изначально в ней один банан. Он проходит трассу на каждом километре обязательно убирая со склада один банан: либо съедая, либо кладя в корзину. Можно ходить в двух направлениях.
Требуется составить программу прохождения слоном всей трассы.
То есть надо сделать так, чтобы перед каждым километром корзина должна быть непуста. Почему- я уже объяснил.
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,614
15.09.2009, 12:31     Задача про слона 0о #16
на мой взгляд условие как условие
1
Цитата Сообщение от Gr1f0n Посмотреть сообщение
Склады заполнены бананами
значит там должно быть хотябы по одному банану, вот если бы было сказано что некоторые склады заполнены бананами тогда надо было бы говорить о возможности дойти или не дойти
2
Цитата Сообщение от Gr1f0n Посмотреть сообщение
Слон на каждом километре съедает по 1 банану
здесь подразумевается что он съедает через 1км банан, не через 500м а именно дойдя до склада
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
15.09.2009, 13:13     Задача про слона 0о #17
А можно класть больше одного в корзину? А можно Съесть и положить в корзину? А выгружать?
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,614
15.09.2009, 13:18     Задача про слона 0о #18
если в корзину помещается 6 бананов то наверное можно класть в нее больше одного)))
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
15.09.2009, 13:36     Задача про слона 0о #19
Тогда так:
1. Идем на следующий Склад (изначально Склад1). Едим 1, догружаем до 6 в корзину. Если на складе больше не осталось бананов, запоминаем что сюда не надо (Последний_Пустой=Склад№)
2. Переходим на следующий. Едим банан со склада.
3. Если предыдущий - уже пустой - п.2
4. Выгружаем
5. Возвращаемся на Последний_Пустой+1. Едим, загружаемся.
6. пп 2-5, пока не перенесем все в последний склад.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2009, 14:01     Задача про слона 0о
Еще ссылки по теме:

Задача про рюкзак C++
C++ Задача про фермера
C++ Задача про банку
C++ Задача про монеты

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

Или воспользуйтесь поиском по форуму:
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,614
15.09.2009, 14:01     Задача про слона 0о #20
как бы пока не брался ее решать но я не думаю что есть какая то сложность в ее решении

Добавлено через 13 минут
то есть как я думаю, самое простое, это надо сделать что бы слон переносил из предыдущего склада в следующий все бананы, и так далее, пока все бананы не окажутся в 11 складе, а от туда он их перенесет в пункт В

Добавлено через 3 минуты
к стати такой способ убережет нас от того что слон помрет с голоду, если в складах будет такое количество бананов
20 15 1 1 1 1 1 1 1 1 1
Yandex
Объявления
15.09.2009, 14:01     Задача про слона 0о
Ответ Создать тему
Опции темы

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