fork download
  1. program soitario;
  2. uses Math;
  3. var N,M,i,j, soluzione, con_x, senza_x, nuovariga, nuovacolonna:longint;
  4. griglia:array[0..12,0..12] of longint;
  5.  
  6. function gioca(r, c: longint): boolean;
  7. begin
  8. (*tris orizzontale*)
  9. if (c-2>=0) and (griglia[r][c-2]=1) and (griglia[r][c-1]=1) then gioca:=false
  10. (*tris orizzontale*)
  11. else if (r-2>=0) and (griglia[r-2][c]=1) and (griglia[r-1][c]=1) then gioca:=false
  12. (* Tris diagonale in alto a sx*)
  13. else if (r-2>=0 ) and (c-2>=0) and (griglia[r-2][c-2]=1) and (griglia[r-1][c-1]=1) then gioca:=false
  14. (* Tris diagonale in alto a dx*)
  15. else if (r-2>=0) and (c+2<=M) and (griglia[r-2][c+2]=1) and (griglia[r-1][c+1]=1) then gioca:=false
  16. else gioca := true;
  17. end;
  18. function riempi (riga, colonna:longint):longint;
  19. begin
  20. if riga>=N then begin riempi:=0; exit end
  21. else
  22. begin
  23. if griglia[riga,colonna]=-1 then
  24. begin
  25. (*Se posso, metto la X*)
  26. if gioca (riga,colonna)=true then
  27. begin
  28. griglia[riga][colonna]:=1;
  29. if colonna+1=M then nuovariga:=riga+1
  30. else nuovariga:=riga;
  31. nuovacolonna:= (colonna+1) mod M;
  32. con_x:= 1 + Riempi(nuovariga,nuovacolonna);
  33.  
  34. (* Reset della griglia[riga][col]*)
  35. griglia[riga][colonna]:=-1;
  36. end
  37. else
  38. begin
  39. (* Non metto la X*)
  40. griglia[riga][colonna]:=0;
  41. if colonna+1=M then nuovariga:=riga+1
  42. else nuovariga:=riga;
  43. nuovacolonna:= (colonna+1) mod M;
  44. senza_x:= Riempi(nuovariga,nuovacolonna);
  45. con_x:=0;
  46. griglia[riga][colonna]:=-1;
  47. end;
  48. (*Ritorno la soluzione migliore*)
  49.  
  50. griglia[riga][colonna]:= max(con_x, senza_x);
  51. riempi:=griglia[riga,colonna] ;
  52.  
  53. end;
  54. riempi:=griglia[riga,colonna] ;
  55.  
  56. end;
  57.  
  58. end;
  59. begin
  60. readln(N,M);
  61. for i:=0 to N do
  62. for j:=0 to M do griglia[i,j]:=-1;
  63. writeln(riempi(1 ,1));
  64. end.
Success #stdin #stdout 0s 5268KB
stdin
2 6
stdout
4