25.12.2011, 01:23 | #1 (permalink) |
Новичок
Регистрация: 25.12.2011
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите решить задачу на паскале
Есть часть решения задачи, но не полная=( помогите прошу очень нужно выполнить ее верно( for k:=1 to n do begin | b[k]:=1; end; eq := true; for k := 2 to n do begin | eq := eq and (a[1][b[1]] = a[k][b[k]]); end; {инвариант: оставшиеся части пересекаются, т.е. существует такое х, что для всякого i из [1..n] найдётся j из [1..m], не меньшее b[i], для которого a[i][j] = х; eq <=> первые элементы оставшихся частей равны} while not eq do begin | s := 1; k := 1; | {a[s][b[s]] - минимальное среди a[1][b[1]]..a[k][b[k]]} | while k <> n do begin | | k := k + 1; | | if a[k][b[k]] < a[s][b[s]] then begin | | | s := k; | | end; | end; | {a[s][b[s]] - минимальное среди a[1][b[1]]..a[n][b[n]]} | b [s] := b [s] + 1; | for k := 2 to n do begin | | eq := eq and (a[1][b[1]] = a[k][b[k]]); | end; end; writeln (a[1][b[1]]); |
25.12.2011, 01:23 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Можете узнать больше информации о этой проблеме, почитав похожие темы Решить задачу в Паскале Помогите решить задачу в Паскале Помогите решить задачу на Паскале Помогите решить задачу в паскале Не могу решить задачу на паскале |
25.12.2011, 09:18 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Как говорил незабвенный Карлсон, - "Спокойствие, только спокойствие!".
Что касается выложенного кода, то там такого понаверчено, что сам черт ногу (или хвост) сломит. А задачка-то школьная. Вот я нарисовал программку, которая ее решает - а уж в подпрограмму переделывайте сами. Если, конечно, устроит. Код:
CONST M=15; {number of lines} N=18; {number of columns} VAR A:Array[1..M,1..N] of Word; i,j:Byte; Nc:Word; Function Mx(z1,z2:Word):Word; begin If z1>z2 then Mx:=z1 else Mx:=z2; end; BEGIN Randomize; A[M,N]:=0; For j:=N-1 downto 1 do A[M,j]:=A[M,j+1]+1+Random(3); For i:=M-1 downto 1 do A[i,N]:=A[i+1,N]+1+Random(3); For i:=M-1 downto 1 do For j:=N-1 downto 1 do A[i,j]:=Mx(A[i+1,j],A[i,j+1])+1+Random(3); For i:=1 to M do begin For j:=1 to N do Write(A[i,j]:4); Writeln; end; Writeln; Nc:=0; For i:=1 to M do For j:=1 to N do If A[i,j]=i+j then begin Writeln('A[',i:2,',',j:2,'] = i+j = ',A[i,j]); Inc(Nc); end; Writeln; Writeln(Nc,' elements'); Readln; END. |
25.12.2011, 16:40 | #4 (permalink) |
Новичок
Регистрация: 25.12.2011
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо вам большое.Только подпрограмму я написать смогу ли=)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|