#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.