2023 大疆笔试题 0806
笔试时间:2023年8月6日 秋招
题目描述
给定一个二维数组cropField,其中每个元素代表农田中对应位置的作物产量,每个位置上的作物经过灌溉可使产量加1倍(即对应位置作物产量数*2),重复灌溉同一位置不能多次加倍。现在需要修建 2 条灌溉渠道,1条从上到下灌溉,1条从左到右灌溉。请确定哪行和哪列应该被落溉,使得农田中作物的总产量最大化,并输出最大化的总产量。
输入描述
int[][]cropField ={
{2,3,1,4}
{1,2,0,3}
{4,2,1,7}
{3,1,4,2}};
输出描述
maxTotalYield=63
样例输入
4 4
2 3 1 4
1 2 0 3
4 2 1 7
3 1 4 2
样例输出
63
提示
注意本考试平台输入格式要求:
二位整型数组
数据格式:第一行有两个空格分隔的数字m和n,m为行数,n为列数,接下来m行,每行为n个以空格分隔的整型数字
参考题解
枚举行列的组合。
C++:
#include <iostream> #include <vector> int solution(std::vector<std::vector<int>>& cropField) { int n = cropField.size(); int m = cropField[0].size(); std::vector<int> maxRows(n, 0); std::vector<int> maxCols(m, 0); int sum = 0; // 找最大行 for (int i = 0; i < n; i++) { int curRow = 0; for (int j = 0; j < m; j++) { curRow += cropField[i][j]; } maxRows[i] = curRow; sum += curRow; } // 找最大列 for (int j = 0; j < m; j++) { int curCol = 0; for (int i = 0; i < n; i++) { curCol += cropField[i][j]; } maxCols[j] = curCol; } int res = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { //
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2023 秋招笔试题汇总解析 文章被收录于专栏
2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。