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 begin
  22. if griglia[riga,colonna]=-1 then
  23. begin
  24. (*Se posso, metto la X*)
  25. if gioca (riga,colonna)=true then
  26. begin
  27. griglia[riga][colonna]:=1;
  28. if colonna+1=M then nuovariga:=riga+1
  29. else nuovariga:=riga;
  30. nuovacolonna:= (colonna+1) mod M;
  31. con_x:= 1 + Riempi(nuovariga,nuovacolonna);
  32.  
  33. (* Reset della griglia[riga][col]*)
  34. griglia[riga][colonna]:=-1;
  35. end
  36. else
  37. begin
  38. (* Non metto la X*)
  39. griglia[riga][colonna]:=0;
  40. if colonna+1=M then nuovariga:=riga+1
  41. else nuovariga:=riga;
  42. nuovacolonna:= (colonna+1) mod M;
  43. senza_x:= Riempi(nuovariga,nuovacolonna);
  44. griglia[riga][colonna]:=-1;
  45. end;
  46. (*Ritorno la soluzione migliore*)
  47.  
  48. griglia[riga][colonna]:= max(con_x, senza_x);
  49. riempi:=griglia[riga,colonna] ;
  50.  
  51. end;
  52. riempi:=griglia[riga,colonna] ;
  53. end;
  54.  
  55. griglia[riga][colonna]:=-1;
  56. end;
  57. begin
  58. readln(N,M);
  59. for i:=0 to N do
  60. for j:=0 to M do griglia[i,j]:=-1;
  61. writeln(riempi(0 ,0));
  62. end.
  63.  
Success #stdin #stdout 0.01s 5264KB
stdin
3 3
stdout
4