View Code of Problem 17

#include <cstdio>
#include <iostream>
using namespace std;
//int mmap[100][100]={0};
//巨大错误点,mmap每次输入mn后要变成0!!! 做题要看仔细了,几组数据,思考方式不同后面直接拉闸!!! 
int max(int t,int l,int r,int b){
	int maxs=t;
	if(maxs<l)
		maxs=l;
	if(maxs<r)
		maxs=r;
	if(maxs<b)
		maxs=b;
	return maxs; 
}
int digui(int i,int j,int mmap[100][100]){
	int t=0,l=0,r=0,b=0;
	int top,left,right,bottom,curent;
	top=mmap[i-1][j];
	left=mmap[i][j-1];
	right=mmap[i][j+1];
	bottom=mmap[i+1][j]; 
	curent=mmap[i][j];
	if(top>curent){
		t=digui(i-1,j,mmap)+1;
	}
	if(left>curent){
	
		l= digui(i,j-1,mmap)+1;
	}
	if(right>curent){
	
		r= digui(i,j+1,mmap)+1;
	}
	if(bottom>curent){
	
		b=digui(i+1,j,mmap)+1;
	}
	return max(t,l,r,b);
	
}
int main(){
	int n,m;
	while(cin>>n>>m){
		int mmap[100][100]={0};
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>mmap[i][j];
			}
		}
		int maxs=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				int res=digui(i,j,mmap);
				if(maxs<res)
					maxs=res;
			}
			
		}
		cout<<maxs<<endl;	
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 17