全部评论
应该是100,100-4,100-3,100-4,100-5,100-3,100求中间积水量。等做完才发现,
leetcode 接雨水变形体,leetcode原题数组首部插入一个数组中最大值,就是这道题了。
积水问题 class Solution { public: int shui(int L,int W,vector<int> arr) { vector<int> gaodu; for (int a : arr) { gaodu.push_back(10 - a); } for (int a : gaodu) { cout << a << " "; } vector<int> gaodu1(gaodu); gaodu.push_back(0); vector<int> shuimian; for (int i=gaodu.size()-1;i>0;--i) { shuimian.push_back(max(gaodu[i], gaodu[i - 1])); gaodu[i - 1] = max(gaodu[i], gaodu[i - 1]); } reverse(shuimian.begin(), shuimian.end()); for (int a:shuimian) { cout << a << " "; } int sz = shuimian.size() - 1; int shui = 0; while (sz>=0) { shui = shui + (shuimian[sz] - gaodu1[sz])*W; sz--; } return shui; } }; int main() { int W, L; cin >> W >> L; vector<int> arr; for (int i=0;i<L;++i) { int tmp; cin >> tmp; arr.push_back(tmp); } Solution S; int jishui; jishui = S.shui(L, W, arr); cout << endl; cout << jishui << endl; system("pause"); return 0; }
int main() { int W, L; cin >> W; cin >> L; vector<int> H; while (L) { int a; cin >> a; a = 100 - a; H.push_back(a); L--; } int max=H[H.size()-1]; int sum = 0; int base = 1 * 1 * W; for (int i = H.size() - 2; i >= 0; i--) { if (H[i] >= max) { max = H[i]; } else { sum = sum + base * (max - H[i]); } } cout << sum << endl; }
我只a了27,我觉得是深度,4-3 4-3 5-3
我理解:测量是从上向下测,水是从左往右流,因此按照测例来说:因为最深是5,所以把石块高度转换为:1 2 1 0 2 ,然后1左边应该有墙,所以第一个1还能圈住1的水,加上中间2102圈住3,加起来就是4,再乘以宽度(面向测例理解😂)
我醉了,死活算不出那个测试用例给的数值
第二题写出来了吗
我是先把测量深度换算成高度,用100去减。然后倒着dp,算每格后面的最高点。然后每格积水就是最高点减去当格高数乘以宽度。累加每格积水输出。
题目的意思是水流从左往右流,水沟左边是水库且有水,水沟右边没水。 暴力求解:迭代找右侧剩余水沟的最高木块,每次计算当前最高木块与上一轮最高木块之间的储水,迭代终止条件为最高木块位置等于水沟最右端。
相关推荐
昨天 22:26
门头沟学院 前端工程师 剑与她皆失:当初实习离职的时候想一段实习加上我是java后端转测试,那大厂测试测开offer不得框框拿🤡🤡🤡🤡
投递网易有道等公司10个岗位 >
点赞 评论 收藏
分享
11-20 13:35
广东白云学院 数据运营 立马来offer:去哪个大厂了啊,其实你选了小公司,遇到不开心的也会后悔没有选择大平台。别美化小公司了,至少大厂有平台,有二次选择的能力
点赞 评论 收藏
分享
11-01 17:40
门头沟学院 护士 点赞 评论 收藏
分享
逍遥生777:你找java的后端开发,那和java无关的项目就不用写了,剩余的项目写详细点
点赞 评论 收藏
分享