View Code of Problem 17

#include<stdio.h>
int main(){
	int m,n,sr,sc,step=0,max=0;
	scanf("%d%d",&m,&n);
	int stair[m+2][n+2],min=9999;
	for(int i=0;i<m+2;i++){
		for(int j=0;j<n+2;j++){
			if(i==0||i==m+1||j==0||j==n+1){
				stair[i][j]=-9999;
			}
			else{
				scanf("%d",&stair[i][j]);
				if(stair[i][j]<min){
					min=stair[i][j];
					sr=i;
					sc=j;
				}
			}
		}
	}
	for(int i=1;i<m+1;i++){
		for(int j=1;j<n+1;j++){
			while(stair[sr][sc]==stair[sr][sc+1]-1||stair[sr][sc]==stair[sr][sc-1]-1||stair[sr][sc]==stair[sr+1][sc]-1||stair[sr][sc]==stair[sr-1][sc]-1){
			if(stair[sr][sc]==stair[sr][sc+1]-1){
				stair[sr][sc]=-9999;
				sc++;
			}
			else if(stair[sr][sc]==stair[sr][sc-1]-1){
				stair[sr][sc]=-9999;
				sc--;
			}
			else if(stair[sr][sc]==stair[sr+1][sc]-1){
				stair[sr][sc]=-9999;
				sr++;
			}
			else if(stair[sr][sc]==stair[sr-1][sc]-1){
				stair[sr][sc]=-9999;
				sr--;
			}
			step++;
			}
			if(step>max){
				max=step;
			}
		}
	}
	printf("%d",max);
} 

Double click to view unformatted code.


Back to problem 17