Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
学渣瞎写的代码 不知道是不是用例太水 反正过了 递归#include<iostream> using namespace std; int r, c; int map[110][110]; int vis[110][110]; int dr[4][2] = { 1,0, -1,0, 0,1, 0,-1 }; int dfs(int x,int y) { if (vis[x][y] != 0) { return vis[x][y]; } int temp = 0; for (int i = 0; i < 4; i++) { int x0 = x + dr[i][0]; int y0 = y + dr[i][1]; if (x0 > r || x0<1 || y0>c || y0 < 1)continue; if (map[x0][y0] >= map[x][y])continue; if (temp < dfs(x0, y0)) { temp = dfs(x0, y0); } } vis[x][y] = 1 + temp; return 1 + temp; } int main() { cin >> r >> c; for (int i = 0; i < 110; i++) { for (int j = 0; j < 110; j++) { vis[i][j] = 0; } } //获取地图数据 for (int i = 1; i <= r; i++) { for (int j = 1; j <= c; j++) { cin >> map[i][j]; } } //开始处理 int ans = -1; for (int i = 1; i <= r; i++) { for (int j = 1; j <= c; j++) { vis[i][j] = dfs(i, j); if (ans < vis[i][j])ans = vis[i][j]; if (ans == r*c) { break; } } if (ans == r*c) { break; } } cout << ans<<endl; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator