关注
//dp[k][i][j]:拥有k把锁,人位于i,j时走过的最大步数 #include<iostream> #include<vector> using namespace std; vector<int> dx{ 0,1,-1,0 }; vector<int> dy{ 1,0,0,-1 }; int max(int a, int b) { return a>b ? a : b; } int main() { int N, M, K; cin >> N >> M >> K; vector<vector<vector<int>>> dp(K + 1, vector<vector<int>>(N, vector<int>(M, 1))); vector<vector<int>> Tmap(N, vector<int>(M)); for (int i = 0; i<N; i++) for (int j = 0; j<M; j++) cin >> Tmap[i][j]; bool key = true; int result = 0; while (key) { key = false; for (int k = 0; k <= K; k++) { vector<vector<int>> dp0(dp[k]); for (int i = 0; i<N; i++) for (int j = 0; j<M; j++) { int temp = dp[k][i][j]; for (int dxy = 0; dxy<4; dxy++) { int x = i + dx[dxy], y = j + dy[dxy]; if (x<0 || x >= N || y<0 || y >= M)continue; if (Tmap[x][y] >= Tmap[i][j]) { if (k<K) dp[k][i][j] = max(dp[k][i][j], dp[k + 1][x][y] + 1); } else dp[k][i][j] = max(dp[k][i][j], dp0[x][y] + 1); } result = max(result, dp[k][i][j]); if (temp<dp[k][i][j])key = true;//dp有更新代表还有位置能走 } } } cout << result << endl; return 0; }
查看原帖
点赞 1
相关推荐
查看23道真题和解析 点赞 评论 收藏
分享
04-09 14:12
浙江工业大学之江学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届春招投递记录 #
25450次浏览 176人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
374310次浏览 2298人参与
# 我的求职总结 #
503350次浏览 7005人参与
# 腾讯工作体验 #
642660次浏览 3877人参与
# 27届实习投递记录 #
102051次浏览 1018人参与
# 摸鱼被leader发现了怎么办 #
206383次浏览 935人参与
# 实习的内耗时刻 #
240128次浏览 1655人参与
# 今年秋招哪家公司给的薪资最良心? #
487121次浏览 2597人参与
# 你后悔选择现在的专业吗 #
126613次浏览 715人参与
# 春招开局,你有保底offer吗? #
146265次浏览 696人参与
# 秋招投简历越早越好吗 #
117755次浏览 858人参与
# 你遇到过哪些神仙同事 #
146617次浏览 777人参与
# 材料专业可以靠半导体脱坑吗? #
41725次浏览 156人参与
# 金融财会交流会 #
153329次浏览 504人参与
# 如何看待应届生身份? #
257423次浏览 2361人参与
# 24届硬件人与华为的爱恨情仇 #
162776次浏览 1014人参与
# 牛客AI体验站 #
31518次浏览 444人参与
# AI岗位暴涨12倍,你会转AI赛道吗? #
26073次浏览 213人参与
# 秋招提前批启动你开冲了吗 #
194425次浏览 2260人参与
# 滴!实习打卡 #
858812次浏览 6887人参与
华为HUAWEI工作强度 1372人发布