View Code of Problem 17

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int getNum(vector<vector<int>> data, int i, int j) {
	int shang=0, xia=0, zuo=0, you=0;
	if ((i - 1 >= 0 && data[i][j] > data[i - 1][j])&&( i + 1 < data.size() && data[i][j] > data[i + 1][j])&& (j + 1 < data[i].size() && data[i][j] > data[i][j + 1])&& (j - 1 >= 0 && data[i][j] > data[i][j - 1])) {
		return 0;
	}
		if (i-1>=0&&data[i][j] < data[i - 1][j]) {
			zuo = getNum(data, i - 1, j)+1;
		}
		if (i + 1 < data.size() && data[i][j] < data[i + 1][j]) {
			you = getNum(data, i + 1, j) + 1;
		}
		if (j + 1 < data[i].size()&&data[i][j] < data[i][j + 1]) {
			shang = getNum(data, i, j+1) + 1;
		}
		if (j - 1 >= 0 && data[i][j] < data[i][j-1]) {
			xia = getNum(data, i, j-1) + 1;
		}
		return max(max(shang, xia),max(zuo, you));
	}
	
int main(){
	int row, col;
	while (cin >> row >> col) {
		vector<vector<int>> data(row);//设置二维数组行数
		int get=0,court=0,temp;
		for (int i = 0; i < row; i++)//初始化每行列数
		{
			data[i].resize(col);
		}
		for (int i = 0; i < row; i++)//二维数组赋值
		{
			for (int j = 0; j < col; j++)
			{
				cin >> get;
				data[i][j] = get;
			}
		}
		for (int i = 0; i < row; i++)
		{
				for (int j = 0; j < col; j++)
				{
					if (data[i][j] == -1)continue;
					temp = getNum(data, i, j);
					if(court< temp)court= temp;
				}
		}
		cout << court<<endl;
	}
}

Double click to view unformatted code.


Back to problem 17