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

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

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

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

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

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

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


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

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

Задача про водопровод - C++
Город Восточный постоянно страдает от недостатка воды. Для устранения этой проблемы была построена новая водопроводная труба. Строительство...

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

Задача про торт - C++
/*Задача интересная и на самом деле не сложная, но в виду того что я кодю вторые сутки, не могу придумать алгоритм. Хочу отметить, что мне...

Задача про скобки - C++
Всем привет. Недавно показали мне такую задачу: ... намекнув на рекурсию. Кто-нибудь знает, как это решается? Спасибо :) ...

Задача про рюкзак - C++
Из заданных N предметов выбрать такие, чтобы суммарный вес был менее 30 кг, а стоимость - наибольшей. Напечатать суммарную стоимость. ...

Задача про банк - C++
Вечер добрый! Прошу помощи, товарищи! Задание на скрине) #include <stdio.h> #include <math.h> #include <conio.h> void main() { ...

31
Gravity
564 / 558 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
14.09.2009, 17:42 #2
В чем собсно вопрос? Узнать сколько бананов донес слон?
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
14.09.2009, 18:09 #3
Цитата Сообщение от Gr1f0n Посмотреть сообщение
Нужно перенести все бананы из складов в пункт Б.
Решения в принципе нет, т.к.
Цитата Сообщение от Gr1f0n Посмотреть сообщение
Слон на каждом километре съедает по 1 банану.
0
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
14.09.2009, 18:27 #4
Цитата Сообщение от easybudda Посмотреть сообщение
Решения в принципе нет, т.к.
ты не прав. перечитай внимательней условие задачи.
0
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,499
14.09.2009, 18:58 #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, ..., ..., };

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

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

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

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

У кого-то есть нормальное и корректное условие?
0
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,499
15.09.2009, 12:15 #15
Цитата Сообщение от kravam Посмотреть сообщение
Окончательное условие.
Есть трасса в 12 километров, посередине каждой трассы склад с бананами, бананов на каждом складе ненулевое число.
Имеется слон с корзиной, изначально в ней один банан. Он проходит трассу на каждом километре обязательно убирая со склада один банан: либо съедая, либо кладя в корзину. Можно ходить в двух направлениях.
Требуется составить программу прохождения слоном всей трассы.
То есть надо сделать так, чтобы перед каждым километром корзина должна быть непуста. Почему- я уже объяснил.
0
15.09.2009, 12:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2009, 12:15
Привет! Вот еще темы с ответами:

Задача про числа - C++
Думаю, думаю, но всё равно не могу понять как решить. Задача: Дан массив из положительных чисел и два числа a и b. Мы можем отнять...

Задача про графы - C++
помогите если не сложно Тексты нужно переписывать в тело сообщения!

Задача про зайца - C++
В небольшой посадке живет заяц. Выскочив из норы и бегая по снегу, он оставил следы. Определить где находится заяц. ВХОДНЫЕ ДАНЫЕ Карта...

Задача про синусоиду - C++
Велосипедист Павлуша выехал на широкую дорогу. Но ехать иначе, чем по закону синусоиды, ему никак не удавалось. Юный спортсмен стартовал в...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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