View Code of Problem 17

#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
int res = 0;
void dfs(vector<vector<int>> a,int i,int j,int cnt)
{
	int q = a.size(), w = a[0].size();
	if(i-1>=0 && a[i-1][j] > a[i][j]) dfs(a,i-1,j,cnt + 1);
	if(i+1<q &&  a[i+1][j] > a[i][j]) dfs(a,i+1,j,cnt + 1);
	if(j-1>=0 && a[i][j-1] > a[i][j]) dfs(a,i,j-1,cnt+1);
	if(j+1<w && a[i][j+1] > a[i][j]) dfs(a,i,j+1,cnt+1);
	if(cnt > res)
	{
		res = cnt;
	}
}
int main()
{
	int n, m;
	while(cin >> n >> m)
	{
		vector<vector<int>> a(n,vector<int>(m));
		
		for(int i = 0;i < n;i ++)
		{
			for(int j = 0;j < m;j ++)
			{
				cin >> a[i][j];
			}
		}
		for(int i = 0;i < n;i ++)
		{
			for(int j = 0;j < m;j ++)
			{
				dfs(a,i,j,0);
			}
		}
		cout << res << endl;
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 17