Advertisement
alvsjo

sabiranje tablice (probno)

Mar 20th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.44 KB | None | 0 0
  1. program tablica;
  2.  
  3. //skupljati poene ako se krece samo dolje ili desno
  4. //cilj je skupiti najvise poena u jednoj putanji
  5. {   2       5(7)    20(27)  3(30)   1(31)   10(41)
  6.     1(3)    3(10)   2(29)   4(34)   8(42)   4(46)
  7.     6(9)    ....
  8.  
  9. -> r | down     ((m+(n-2))!)/((n-1)!*(m-1)!)
  10.      ˇ             m+n-2 nad n-1
  11. }
  12.  
  13. {procedura za unos, stampu, formiranje za nove vrijednosti
  14.  
  15. for j:=2 to n do A[1,j]=a[1,j-1]+a[1,j];
  16. for i:=2 to n do a[i,1]=a[i-1,1]+a[i,1];
  17.  
  18. for i:=2 to m do
  19.     for j:=2 to n do
  20.     ---
  21.     if a[i-1,j]>a[i,j-1]
  22.         then a[i,j]:=a[i,j]+a[i-1,j]
  23.         else a[i,j]:=a[i,j]+a[i,j-1]
  24.  
  25.  
  26.  
  27. rezultat treba da bude d,d,d,d,d,r,r,r,r,d,r,da
  28.  
  29. procedura m,n stalno pozivati sebe i stampa put (odnazad)
  30. }
  31. type
  32.     niz=array[1..20]of integer;
  33.     matrica=array[1..20]of niz;
  34. var
  35.     m,n,l,k,r,t:integer;
  36.     x,y,z:niz;
  37.     a,b,c:matrica;
  38.  
  39. procedure UnosMatrice(var m,n:integer; var a:matrica);
  40. var i,j:integer;
  41. begin
  42.     write('Broj vrsta: ');
  43.     readln(m);
  44.     write('Broj kolona: ');
  45.     readln(n);
  46.     for i:=1 to m do
  47.     begin
  48.         for j:=1 to n do
  49.         begin
  50.         write('A[',i,';',j,']= ');
  51.         readln(A[i,j]);
  52.         writeln;
  53.         end;
  54.     end;
  55. end;
  56.  
  57.  
  58. procedure StampaMatrice(m,n:integer; A:matrica);
  59. var i,j:integer;
  60. begin
  61.     writeln;
  62.     for i:=1 to m do
  63.     begin
  64.         for j:=1 to n do
  65.         begin
  66.         write(A[i,j]:4);
  67.         end;
  68.         writeln;
  69.     end;
  70.     writeln;
  71. end;
  72.  
  73. procedure noveVrijednosti(m,n:integer;var a:Matrica);
  74. var i,j:integer;
  75. begin
  76. for j:=2 to n do A[1,j]:=a[1,j-1]+a[1,j];
  77. for i:=2 to m do a[i,1]:=a[i-1,1]+a[i,1];
  78.  
  79. for i:=2 to m do
  80.     begin
  81.     for j:=2 to n do
  82.         begin
  83.         if (a[i-1,j]>a[i,j-1])
  84.             then a[i,j]:=a[i,j]+a[i-1,j]
  85.             else a[i,j]:=a[i,j]+a[i,j-1];
  86.         end;
  87.     end;
  88. end;
  89.  
  90. procedure StampaNiza (n:integer; x:niz);
  91.  var i:integer;
  92.  begin
  93.     write('Elementi niza: ');
  94.     for i:=1 to n-1 do  write (x[i],',');
  95.     writeln(x[n]);
  96.  end;
  97.  
  98. procedure koraciNiz(m,n:integer;a:matrica; var r,t,k:integer; var x:niz);
  99.  
  100. begin
  101.     if (r>1) or (t>1) then
  102.     begin
  103.         if (a[r-1,t]>a[r,t-1])
  104.             then begin
  105.             x[k]:=1;
  106.             r:=r-1;
  107.             K:=k-1;
  108.             end
  109.             else begin
  110.             x[k]:=2;
  111.             t:=t-1;
  112.             k:=k-1;
  113.             end;
  114.         //StampaNiza(l,x);
  115.         koraciNiz(m,n,a,r,t,k,x);
  116.     end;
  117. end;
  118.  
  119. procedure slova(l:integer; x:niz);
  120. var i:integer;
  121. begin
  122.     for i:=1 to l do
  123.     begin
  124.         if x[i]=1 then write('D ')
  125.         else write ('R ');
  126.     end;
  127.     writeln;
  128. end;
  129.  
  130. begin
  131. UnosMatrice(m,n,a);
  132. StampaMatrice(m,n,a);
  133.  
  134.  
  135. noveVrijednosti(m,n,a);
  136. //StampaMatrice(m,n,a);
  137. l:=m+n-2;
  138. k:=l;
  139. r:=m;
  140. t:=n;
  141.  
  142. koraciNiz(m,n,a,r,t,k,x);
  143. slova(l,x);
  144.  
  145. readln;
  146. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement