• Source
    1. #include <iostream>
    2. #include <math.h>
    3. using namespace std;
    4.  
    5. int chess[102][102];
    6. int r, c;
    7. void read ()
    8. {
    9. cin>>r>>c;
    10. for (int i=1; i<=r; i++)
    11. {
    12. for (int j=1; j<=c; j++)
    13. {
    14. cin>>chess[i][j];
    15. }
    16. }
    17. }
    18.  
    19. int sumM [102][102];
    20. int x_xq[] = {-1, -2, +1, +2};
    21. int y_xq[] = {-2, -1, -2, -1};
    22. void find_M ()
    23. {
    24. for (int i=1; i<=r; i++)
    25. {
    26. for (int j=1; j<=c; j++)
    27. {
    28. int tmp = chess[i][j];
    29. for (int k=0; k<4; k++)
    30. {
    31. int Y = i+y_xq[k];
    32. int X = j+x_xq[k];
    33. if (Y>=1 && Y<=r && X>=1 && X<=c)
    34. {
    35. tmp = max (tmp, chess[i][j]+sumM[Y][X]);
    36. }
    37. }
    38. sumM[i][j]=tmp;
    39. }
    40. }
    41. }
    42.  
    43. int main ()
    44. {
    45. read ();
    46. find_M ();
    47. int Max = 0;
    48. for (int i=1; i<=r; i++)
    49. {
    50. for (int j=1; j<=c; j++)
    51. {
    52. Max = max (Max, sumM[i][j]);
    53. }
    54. }
    55. cout<<Max;
    56. return 0;
    57. }