ЦИКЛ В ЦИКЛЕ |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
ЦИКЛ В ЦИКЛЕ |
ipconnect |
20.04.2015 8:28
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Столкнулся с проблемой такого порядка. Как ни крутил, решить оптимально не получается. Требуется мозговой штурм коллективного разума. Задача выглядит следующим образом.
Имеется одномерный массив с N ячейками. Необходимо, казалось бы, просто сделать следующее. По заданному максимальному взятому для использования количеству ячеек M (<=N), начинающихся с первой от начала массива, необходимо менять значения в них следующим образом. Объяснить могу только на примере. Т.е. в начале необходимо взять две первые ячейки. Изначально в первую записать 1, во вторую - на единицу больше. Затем надо менять значение во второй ячейке до некоторого числа K (к примеру, 30)... Выглядит это так 1 2 1 3 ... 1 30 Будут образовываться пары чисел, которые нужно потом будет сохранить. Но это уже к делу не относится. Тут бы сделать основное. Далее, когда значение во второй ячейке достигнет К, надо значение в первой ячейке увеличить на 1. И повторить цикл заново. Т.е. 2 3 2 4 ... 2 30 и т.д. До того момента пока последняя пара будет К-1 К (в примере 29 30). Далее необходимо включить в цикл третью ячейку. И сделать тот же самый цикл по тем же самым критериям изменений. Т.е. изначально это 1 2 3, потом 1 2 4 ... вплоть до К-2 К-1 К (28 29 30). Итак пока мы не заполним все три ячейки таким перебором. Потом четыре ячейки и т.д. Перебор из M ячеек закончится тогда, когда последним набором чисел будет K-M+1 K-M ... K-2 K-1 K Думал, что просто. Справлюсь на раз-два-три. Оказалось не всё так просто, как кажется. Задача имеет практическое значение, поэтому бросить не могу. Нужно решить. Сам не в состоянии. Впервые попал в ступор при решении подобных задач. Помогите выбраться из тупика. |
Федосеев Павел |
21.04.2015 21:25
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 8 |
Откомпилировал во FreePascal файл из поста #4.
Результат Код 1 7 9 0 0 1 7 10 0 0 1 8 9 0 0 1 8 10 0 0 1 9 10 0 0 2 3 4 0 0 2 3 5 0 0 Для сравнения тот же кусок из TZ1.txt из поста #5: Код 1 7 9 0 0 1 7 10 0 0 ************* 2 3 4 0 0 2 3 5 0 0 Ну и дальше Код 5 6 7 8 9 5 6 7 8 10 5 6 7 9 10 5 6 8 9 10 5 7 8 9 10 6 7 8 9 10 Из TZ1: Код 5 6 7 8 10 ************* 6 7 8 9 10 Я не пойму. Помеченное звёздочками должно отсутствовать, или наоборот - почему то отсутствует? ---------------------------- Sorry. Пока набирал, всё уже закончилось. Сообщение отредактировано: Федосеев Павел - 21.04.2015 21:34 |
Текстовая версия | 28.04.2024 2:08 |