#include<bits/stdc++.h> using namespace std; int find(int a[][100],int n,int m) { int i,j,x,y; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(a[i][j]==1) x=i,y=j; int begin=1; int startx=x,starty=y; int nextx=0,nexty=1; int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; int dirflag=0; int flag=0; while(1) { nextx=startx+dir[dirflag][0]; nexty=starty+dir[dirflag][1]; if(a[nextx][nexty]==(begin+1)) { flag=0; startx=nextx; starty=nexty; begin++; continue; } else { dirflag=(dirflag+1)%4; flag++; } if(flag==4) return begin-1; } } int main() { int n,m,i,j; int a[100][100]; while(cin>>n>>m) { for(i=0;i<=n+1;i++) for(j=0;j<=n+1;j++) a[i][j]=0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) cin>>a[i][j]; cout<<find(a,n,m)<<endl; } return 0; } |
Double click to view unformatted code.