商汤科技:投嵌入式岗,笔试做的算法岗的题,这是直接挂我吗?

算法岗的选择题完全是机器学习的题,对于一个小白而言,完全就是懵逼,让后四道编程题,前两道题很简单,第三道题最优策略选择数组两端的数,分数高的获胜,属于博弈论题,按照要求做了,只能通过60%,代码如下:
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
	int n;
	cin >> n;
	vector<float>  arr(n + 1, 0), arr2(n + 1, 0), array(n + 1, 0), sum(n + 1, 0);
	for (int i = 1; i <= n; ++i)
	{
		cin >> arr[i];
	}
	for (int i = 1; i <= n; ++i)
	{
		float p = 1.0 / (1 + exp(-1 * arr[i]));
		if (i % 2 == 0)
		{
			arr2[i] = i + log(p);
		}
		else
		{
			arr2[i] = i + log(1 - p);
		}
	}

	vector<vector<double> > gain(n + 1, vector<double>(n + 1, 0));
	for (int i = 1; i <= n; ++i)
	{
		array[i] = arr2[i];
		sum[i] += sum[i - 1] + array[i];
		gain[i][i] = array[i];
	}
	for (int i = n - 1; i < array.size() && i>0; i--)
	{
		for (int j = i; j < array.size(); j++)
		{
			gain[i][j] = sum[j] - sum[i - 1] - min(gain[i + 1][j], gain[i][j - 1]);
		}
	}
	cout << gain[1][n] << " " << (sum[n] - gain[1][n]) << endl;
	if (gain[1][n]>(sum[n] - gain[1][n]))
	{
		cout << "TZ" << endl;
	}
	else
	{
		cout << "xtz" << endl;
	}
	system("pause");
	return 0;
}
感觉测试样例的计算都是不对的,按照要求,第二个测试样例的答案是符合要求的,不知道是我的代码问题还是样本问题。求大佬ac代码。笔试应该是凉凉了。

#商汤科技##笔试题目#
全部评论
我只能说,小场面,你这不是算法岗的编程题😓
点赞 回复
分享
发布于 2019-08-19 21:09
我也是 前两题对了 第三题70 最后一题不会求偏导了
点赞 回复
分享
发布于 2019-08-19 23:03
百信银行
校招火热招聘中
官网直投

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务