Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи по информатике\программированию

Автор: StrelokAndrey
Дата сообщения: 22.11.2009 22:02
Столкнулся с такой задачей:

сколько существует способов раскроить 100 метров проволоки на куски по 2, 5, 20 и 50 метров

Может подскадет кто как её решить? Заранее спасибо!
Автор: ya_Mickey
Дата сообщения: 23.11.2009 07:09
StrelokAndrey
Если тупо, то как-то так: (осторожно, псевдокод!)


Код:
samples : array = {2,5,20,50};
currentCase: stack;

proc cutRemainLength( remainLength, curSamplePtr )
curSamples : array = {samples[curSamplePtr:]}
beg
if remainLenght == 0 then
printCase(currentCase);
return;
end if

foreach samplePtr in curSamples
beg
if remainLength < samplePtr then // данный случай не подходит.
return;
else
currentCase.push(samplePtr);
cutRemainLength(remainLength-samplePtr, indexof(samplePtr));
end if
end proc
Автор: StrelokAndrey
Дата сообщения: 23.11.2009 19:46
ой, а это на каком языке?
Автор: ya_Mickey
Дата сообщения: 24.11.2009 05:37
StrelokAndrey
Сказано же - псевдокод. Переводи на какой хочешь.
Автор: KillDead
Дата сообщения: 03.12.2009 12:52
Всем добрый день.
Препод по программированию задал задачку. Что-то никак не соображу, как решается.
Задача по Динамическим структурам данных, по паскалю в частности. Хотя жёстко к языку не привязана. Так что интересует алгоритм решения а не реализация . Вообще задача вроде как стандартная и видел много вопросов по ней. Но вот решения, которое подходит мне не нашёл.
Есть однонаправленный список, который может быть зациклен
Задание такое – определить зацикленный ли список?
Данные и условия:

Список может быть зациклен не только на предыдущий элемент. Т.е решение запустить 2 прохода по списку с разным шагом в 2 не подходит.
Перезаписывать, добавлять что-либо в самом списке нельзя. Т.е добавить флаг-" здесь мы были" нельзя.
Создавать переменные, которые зависят от количества элементов в цикле нельзя. Т.е создать ещё список с пройденными адресами нельзя.
Количество элементов списка (N) неизвестно. И максимальное количество проходов по списку, за которое точно можно будет сказать, что список не зациклен (или зациклен), не должно превышать N. Т.е тупой поиск в пройденных элементах использовать нельзя.
Вродь всё)
Автор: FuzzyLogic
Дата сообщения: 03.12.2009 19:03
KillDead
Если кол-во проходов по списку N (кол-во элементов в списке), как вы сказали, то что мешает просто пробежать начиная с каждого элемента N+1 шагов (или до конца списка или пока не упрётесь в элемент откуда начинали) и посмотреть вернётесь ли вы в точку откуда начинали данный проход.
Автор: KillDead
Дата сообщения: 03.12.2009 21:40

Цитата:
Если кол-во проходов по списку N (кол-во элементов в списке), как вы сказали, то что мешает просто пробежать начиная с каждого элемента N+1 шагов (или до конца списка или пока не упрётесь в элемент откуда начинали) и посмотреть вернётесь ли вы в точку откуда начинали данный проход.

Спасибо за ответ. Как я понял, ваш способ- просто пробежать N раз и посмотреть на что ссылается элемент? Только
Цитата:
Количество элементов списка (N) неизвестно.

Или я неправильно понял?
Я уже и не знаю что делать. Мож что-нить связанное с указателями и памятью тут?
Автор: pavlovigor
Дата сообщения: 15.05.2013 14:17
Добрый день помогите написать программу (С++) по переводу римских цифр в арабские с коментариями
Автор: miwa
Дата сообщения: 15.05.2013 14:59
pavlovigor
Ссылка

Страницы: 12

Предыдущая тема: Ошибка при копировании строк


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.