华为8.11机试第三题
麻了,考试时便秘,考完试贼通畅,第一题大家都能过部分,第二题没写,第三题刚才想了想,写了一下
题意:坑里面放木块,高于地平面不放,输入:木块宽度n(高为1),坑宽度m,数组(m个数字,表示地面高低)
输出:能放几块
请大佬指正!
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//从上往下一层一层递归
void maxnums(vector<int>data, int &ret, int n, int m)
{
int maxdeep = 0;
for (int i = 0; i < m; i++)
{
maxdeep = min(maxdeep, data[i]);
}
if (maxdeep >= 0)return;
for (int i = 0; i < m; i++)
{
if (data[i] <= -1)
{
int num = 0;
while (data[i] <= -1)
{
num++;
i++;
}
ret += num / n;
}
}
for (int i = 0; i < m; i++)
{
data[i]++;
}
maxnums(data, ret, n, m);
}
int main()
{
int n = 2, m = 4;//2 4
vector<int>data{ 0,-1,-2,0 };//0 -1 -2 0
int ret = 0;
maxnums(data, ret, n, m);
cout << ret << endl;
return 0;
} #笔试题目##华为#
