![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Dennis |
![]()
Сообщение
#1
|
Гость ![]() |
Есть массив(двумерный), который заполнен цифрами 1, 2, 3
Пример 1122 1212 2221 1211 за минимальное число раз сделать массив однородным, то есть так чтобы он состоял только из 1-ц,2-ек или 3-ек. Известно, что цифры меняются в соответствии: 1 на 3 2 на 1 3 на 2 причем при изменении какой-либо цифры помимо её самой, меняются и рядом стоящие с ней сверху, снизу, справа и слева в том же соответствии. В моём примере минимальное число операций будит равно двум (весь массив будит заполнен единицами). За ранее спасибо за помощь в реализации программы. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(Dennis @ 24.02.05 10:43) За ранее спасибо за помощь в реализации программы. Это что значит? Что здесь надо готовую программу выложить? Я думаю, что всю программу никто писать не будет. Если есть какие-то конкретные проблемы - пожалуйста... Что именно не получается? |
Guest |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(volvo @ 24.02.05 11:47) Это что значит? Что здесь надо готовую программу выложить? Я думаю, что всю программу никто писать не будет. Если есть какие-то конкретные проблемы - пожалуйста... Что именно не получается? Я вот пробовал, делать рекурсию с полным перебором, но происходит переполнение стека и... Вобщем мне бы просто подсказал какие идеи другие кроме перебора, а я конечно сам всё сделаю =) |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
А выложи-ка свою программу... Может и избавимся от переполнения стека ;)
|
Dennis |
![]()
Сообщение
#5
|
Гость ![]() |
Код program my; uses crt; const num=10; type my1=array[1..num,1..num] of char; type my2=array[1..num,1..num] of char; var m,n,i,j,ci,cj:byte; k:string; min,el:integer; opn:longint; a:my1; b:my2; F,F1:text; function odnor:byte; begin for i:=1 to n do begin for j:=1 to m do begin if b[i,j] = b[1,1] then inc(el); end; end; if el=n*m then odnor:=1 else odnor:=0; end; {////////////////////////////////////////////////////////////////////////////} procedure selector(ci,cj:byte); begin case b[ci,cj] of '1': begin b[ci,cj]:='3'; exit; end; '2': begin b[ci,cj]:='1'; exit; end; '3': begin b[ci,cj]:='2'; exit; end; end; end; {////////////////////////////////////////////////////////////////////////////} procedure changecolor(i,j:byte); begin selector(i,j); if (i > 1) then selector(i-1,j); if (j < m) then selector(i,j+1); if (i < n) then selector(i+1,j); if (j > 1) then selector(i,j-1); end; {////////////////////////////////////////////////////////////////////////////} procedure forw(i,j:byte); begin inc(opn); if odnor = 0 then begin changecolor(i,j); if (i > 1) then forw(i-1,j); if (j < m) then forw(i,j+1); if (i < n) then forw(i+1,j); if (j > 1) then forw(i,j-1); end else min:=opn; end; {////////////////////////////////////////////////////////////////////////////} {//////////////////////////// Reading from input file ///////////////////////} begin clrscr; assign(F,'input.txt'); reset(F); read(F,n); readln(F,m); for i:=1 to n do begin readln(F,k); for j:=1 to m do begin a[i,j]:=k[j]; b[i,j]:=k[j]; write(a[i,j]); end; writeln; end; close(F); {////////////////////////////////////////////////////////////////////////////} writeln; writeln; for i:=1 to n do begin for j:=1 to m do begin opn:=0; forw(i,j); end; writeln; end; for i:=1 to n do begin for j:=1 to m do begin write(b[i,j]); end; writeln; end; writeln; writeln(min); readkey; end. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:28 |