1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| ipconnect |
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 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 Думал, что просто. Справлюсь на раз-два-три. Оказалось не всё так просто, как кажется. Задача имеет практическое значение, поэтому бросить не могу. Нужно решить. Сам не в состоянии. Впервые попал в ступор при решении подобных задач. Помогите выбраться из тупика. |
![]() ![]() |
| ipconnect |
Сообщение
#2
|
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
УРА!!! Сам докрутил
Вот, что получилось: Program MH; Const n=5; k=6; Var a: array [0..n] of integer; i,j,d,l,m: integer; Id, Od: text; begin assign(Od,'C:\TP\tz.txt'); Rewrite(Od); a[1]:=1; i:=1; repeat i:=i+1; repeat for j:=1 to k-a[i-1] do begin a[i]:=a[i-1]+j; d:=0; for l:=1 to n do if a[l]>a[l-1] then d:=d+1; for l:=1 to n do if d=i then write(Od,a[l]:3) else break; if l=n then writeln(Od); end; a[i-1]:=a[i-1]+1; m:=-1; for l:=i-1 downto 1 do begin m:=m+1; if a[l]>k-m then begin a[l-1]:=a[l-1]+1; a[l]:=l; end; end; until a[1]=k-i+2; a[0]:=0; for l:=1 to i do a[l]:=l; until i=n; close(Od); end. |
ipconnect ЦИКЛ В ЦИКЛЕ 20.04.2015 12:28
Федосеев Павел Оно?program Counter30;
const
M = 5;
K = 10;
t… 20.04.2015 16:06
ipconnect
Оно?program Counter30;
const
M = 5;
K = 10;
… 21.04.2015 1:53
Федосеев Павел Или такprogram Counter30;
const
M = 5;
K = 10… 21.04.2015 3:13
ipconnect
Или такprogram Counter30;
const
M = 5;
K = 1… 21.04.2015 3:49
ipconnect Т.е. сам принцип цикличности переменного количеств… 21.04.2015 10:57
Федосеев Павел IsFinal - условие завершения, условно говоря, прог… 21.04.2015 11:31
ipconnect
IsFinal - условие завершения, условно говоря, про… 21.04.2015 11:36
ipconnect Павел, совместно с ещё одним помощником пришли к с… 21.04.2015 21:56
Федосеев Павел Откомпилировал во FreePascal файл из поста #4.
Рез… 22.04.2015 1:25![]() ![]() |
|
Текстовая версия | 7.11.2025 3:19 |