SHARE
    TWEET
    AlexAvram

    Untitled

    Apr 8th, 2025
    434
    0
    Never
    Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
    C++ 1.77 KB | None | 0 0
    1. //submatrix #1441
    2. #include <iostream>
    3. #include <fstream>
    4. #include <cmath>
    5. using namespace std;
    6. string fisier="submatrix";
    7. ifstream fin(fisier+".in");
    8. ofstream fout(fisier+".out");
    9. int n, dp[1001][1001];
    10. bool mat[1001][1001];
    11. /*
    12. problema clasica
    13. //
    14. imi bordez initial matricea cu elementele
    15. de pe prima linia si prima coloana; verificarile
    16. pe aceste pozitii ar fi inutile;
    17. //
    18. pentru fiecare alt element, verific care este lungimea
    19. laturii celui mai mic patrat din care fac parte elementele din
    20. "spatele lui"; fie minimul dintre lungime laturilor verifcatex,
    21. acest fapt ne garanteaza garanteaza pentru elementul curent
    22. o lungime x+1;
    23. |element de verificat element de verificat|
    24. |element de verificat element curent |
    25. //
    26. la final pe pozitia (i, j) a matricei dp[][] v-a fi memorata
    27. lungimea maxima a laturii patratului ce contine elemenutul (i, j),
    28. luand in calcul strict elementele din submatricea (0,0)-(i,j)
    29. //
    30. parcurg matricea si afisez cea mai mare valoare gasita;
    31. */
    32. void citire()
    33. {
    34. fin>>n;
    35. for (int i=1; i<=n; ++i)
    36. for (int j=1; j<=n; ++j)
    37. fin>>mat[i][j];
    38. }
    39. void construire_margini()
    40. {
    41. for (int i=1; i<=n; ++i)
    42. {
    43. dp[i][1]=mat[i][1];
    44. dp[1][i]=mat[1][i];
    45. }
    46. }
    47. void rezolvare()
    48. {
    49. construire_margini();
    50. int rezultat=0;
    51. for (int i=2; i<=n; ++i)
    52. {
    53. for (int j=2; j<=n; ++j)
    54. {
    55. if (mat[i][j])
    56. {
    57. dp[i][j]=min(dp[i-1][j], min(dp[i-1][j-1], dp[i][j-1]))+1;
    58. if (dp[i][j]>rezultat)
    59. rezultat=dp[i][j];
    60. }
    61. else
    62. dp[i][j]=0;
    63. }
    64. }
    65. fout<<rezultat<<'\n';
    66. }
    67. int main()
    68. {
    69. citire();
    70. rezolvare();
    71. return 0;
    72. }
    Advertisement
    Add Comment
    Please, Sign In to add comment
    Public Pastes
    We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
    Not a member of Pastebin yet?
    Sign Up, it unlocks many cool features!

    AltStyle によって変換されたページ (->オリジナル) /