网易雷火-游戏开发岗笔试题吐槽

今天2019.09.15,目测是个好日子,但雷火的游戏开发岗笔试太不友好了,直接6道编程题,打开考试链接看到后,吓得我往后退了10步,看完题面之后,又退了10步。
怎么办呢,总不能交白卷吧,硬着头皮做吧。
题面:
1. 根据面积,宽高比和宽这三个特征对矩形排序输出;(拼排序算法就好了,最简单使用冒泡😉100%);
2. 三角形的顺时针/逆时针调整(完全没思路😪);
3. 求完成多任务最小延迟天数(思路,把DeadLine靠前的放前面,把cost小的放前面,排序,计算后结果31%😥
4. 互质数求f,求出之后,找最小的,四舍五入输出一个浮点数(做到最后,四舍五入时浮点数转字符串,sprintf函数竟然不能用。。。😮
5. 砌墙
6. 仿vi编辑器
从题面来看,太不友好了。。。。。。。。。。。。。。。。。劝退呢这是。。。。。。。。
附第4题的代码,结果不对,需要修改
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main() 
{
	int N;
	cin >> N;

	vector<double> vXs;
	for (int i = 1; i <= N; i  )
	{
		int nCount = 1;
		for (int j = 2; j <= i; j  )
		{
			bool bFlag = false;
			for (int k = j; k >= 2; k--)
			{
				if (j % k == 0)
				{
					bFlag = true;
					break;
				}
			}
			if (!bFlag)
				nCount  ;
		}
		double fFunc = double(nCount) / i;
		vXs.push_back(fFunc);
	}

	double fMin = 1;
	for (int i = 0; i < vXs.size(); i  )
	{
		if (vXs[i] < fMin)
			fMin = vXs[i];
	}

	char chMin[256];
	sprintf(chMin, "%.7f", fMin);
	string strMin(chMin);
	
	int nIdx = strMin.find('.');
	strMin = "0.1000064";
	
	if (atoi(strMin.substr(nIdx   7, 1).c_str()) >= 5)
	{
		int n = atoi(strMin.substr(nIdx   6, 1).c_str())   1;
		char chN[2];
		sprintf(chN, "%d", n);
		string strN(chN);
		strMin = strMin.substr(0, nIdx)   strMin.substr(nIdx, 6)   strN;
	}
	else
		strMin = strMin.substr(0, nIdx)   strMin.substr(nIdx, 7);

	cout << strMin << endl;
	system("pause");
	return 0;
}



#笔试题目##网易雷火#
全部评论
第1题直接排序 第2题暴力拿80%,满分应该建个图按bfs顺序计算三角形就好了 第3题见过原题,状态压缩的动态规划, 第4题,找规律,在1 2 6 30 210 处答案改变(打表),发现刚好是累乘素数,直接按规律求68%,然后这个fi实际上就是欧拉函数,直接算欧拉函数就100了 第5题,打表发现前30项也才大约1800种方案(类似斐波那契数列),然后的话,预处理出1800种方案,建图,如果2个可以相邻,连边。 问题变成从图上任意一点出发走h步的方案数 直接记忆化搜索动态规划,dp[2010][10]表示第i点走j步方案数,跑一遍dfs就满分了 第6题。。明明有歧义,到底是答案每行不超过1000行还是输入不超过1000行,那个监考的不肯说。。 听说说原题,反正就是暴力大模拟。。没做
点赞 回复 分享
发布于 2019-09-15 18:41
03题的代码: #include <stdio.h> #include <vector> #include <algorithm> #include <string.h> #include <limits.h> #include <string> #include <iostream> #include <queue> #include <math.h> #include <map> #include <stack> #include <set> #include <list> #include <forward_list> #define left (now<<1) #define right ((now<<1)+1) #define mid ((l + r) >> 1) #define midmid ((r + mid) >> 1) #define LONG_LONG_MIN -9223372036854775808ll #define LONG_LONG_MAX 9223372036854775807ll using namespace std; typedef long long int ll; const int MAXN = 2e6 + 10; const int MOD = 1e9 + 7; ll dp[MAXN]; ll dl[30],cost[30]; int sum,n; ll dfs(int now){     if(dp[now] != -1){ return dp[now];}     if(now == sum){         return dp[now] = 0;     }     dp[now] = LONG_LONG_MAX / 2;     ll nowday = 0;     for(int i = 0; i <= n - 1; ++i){         int p = 1 << i;         if((p & now) == 0){             nowday = nowday + cost[i + 1];         }     }     for(int i = 0; i <= n - 1; ++i){         int p = 1 << i;         if((p & now) == 0){             int st = p | now;             ll need = max(0ll,nowday - dl[i + 1]);             dp[now] = min(dp[now],dfs(st) + need);         }     }     return dp[now]; } int main(){     while(scanf("%d",&n)!=EOF){         for(int i = 1; i <= n; ++i){             scanf("%lld%lld",&dl[i],&cost[i]);         }         memset(dp,-1,sizeof(dp)); sum = (1 << n) - 1;         dfs(0);         printf("%lld\n",dp[0]);     }     return 0; }
点赞 回复 分享
发布于 2019-09-15 20:14
太难了。。最后一道吓死人
点赞 回复 分享
发布于 2019-09-15 18:31
跪求在leetcode上相似的题
点赞 回复 分享
发布于 2019-09-15 22:52
第一题一开始重载pair的小于好,在用库sort排序,死活过不了,有谁是用类似的方法吗😅借鉴一下
点赞 回复 分享
发布于 2019-09-15 23:59

相关推荐

评论
1
12
分享

创作者周榜

更多
牛客网
牛客企业服务