Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<algorithm>
  3. using namespace std;
  4. int mx;
  5. int n,m;
  6. int a[1010][1010];
  7. int dp[1010][1010];
  8. int di[4]={0,0,1,-1};
  9. int dj[4]={1,-1,0,0};
  10. int solve(int i,int j){
  11.   if(dp[i][j]!=-1) return dp[i][j];
  12.   dp[i][j]=1;
  13.   for(int k=0;k<4;k++){
  14.     int x=i+di[k];
  15.     int y=j+dj[k];
  16.     if(x>=1 && x<=n && y>=1 && y<=m){
  17.       if(a[x][y] - a[i][j] == 1)
  18.         dp[i][j]= dp[i][j] + solve(x,y) ;  
  19.     }
  20.   }
  21.  // printf(" %d,%d : %d\n",i,j,dp[i][j]);
  22.   return dp[i][j];
  23. }
  24. int main()
  25. {
  26.   scanf("%d%d",&n,&m);
  27.   for(int i=1;i<=n;i++){
  28.     for(int j=1;j<=m;j++){
  29.         scanf("%d",&a[i][j]);
  30.         dp[i][j]=-1;
  31.     }
  32.   }
  33.   for(int i=1;i<=n;i++){
  34.     for(int j=1;j<=m;j++){
  35.       mx=max(mx,solve(i,j));
  36.     }
  37.   }
  38.   printf("%d",mx);
  39.   return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement