网易游戏开发岗笔试经历 2020.9.5 Apare_xzc

这篇博客详细介绍了2020年9月5日网易游戏开发岗位的笔试经历,包括四道编程题的题目描述、解题思路和分析。第一题涉及模拟自动贩卖机的计费功能,利用栈来模拟货物口。第二题讨论了电子显示器的刷新次数计算,需要按题意进行图像平移模拟。虽然作者在实际解题过程中遇到了时间限制和错误,但提供了可能的解决方案。
摘要由CSDN通过智能技术生成

网易游戏开发岗笔试(2020.9.5 15:00-17:30)


昨天的笔试,做得挺难受的,当时正在搬寝室,很吵,然后保洁阿姨来打扫寝室卫生…
2.5小时,4道编程题,每道题100分。 1, 0.2 0 0.1 ,第2题应该就是模拟,说我TLE,第三题bfs,说段错误,不知道map哪里来的段错误…, 第四题就5分钟了,想到了思路,细节除了点问题,敲完就交了,剩下几秒钟结束,过了10%,j++写成了i++…


第一题:自动贩卖机

题意:

        模拟一个自动贩卖机。贩卖机有n个货物口,每个货口初始都放了无限多的相同的货物,货物的单价为a[i], 每个人通过手机扫码可以打开贩卖机的门,拿东西,然后关上门之后,贩卖机会自动扣费。现在让你实现这个计费功能。

        每个人可以从x号货物口拿一个货物到左手或者右手上,记为take left x 或者 take right x。可以把左手或者右手的货物放到y号货物口,记为return left y 或者 return right y。还可以把左手或者右手上拿的货物装进背包里。记为keep left 或 keep right。

        货物口的货物满足后进先出的原则。T组输入,T<=100, 每组输入第一行一个K(K<=100),代表这个人的操作的个数,下面是K行,每行一个命令,命令有如下:

take left x(数字)
take right x(数字)
return left x
return right x
keep left
keep right

每个人输出一行,输出他要付的钱。

分析:每个货物口用一个栈模拟,记录这个人当前左手和右手的货物编号,模拟即可。(其实不用一开始每个都push 10000个货物模拟OO,只要在取货的时候,判断如果栈空了,就取一个a[i]即可)

%100 AC

#include <bits/stdc++.h>
using namespace std;
const int N = 200;
stack<int> st[N];
int price[N]; 
char hand[100],op[100];
int main(void) {
   
	int n,m,k,id;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i) {
   
		scanf("%d",price+i);
		for(int j=1;j<=10001;++j)
			st[i].push(price[i]);
	}
	for(int i=1;i<=m;++i) {
   
		scanf("%d",&k);
		int man[2] = {
   0};
		int hands = -1;
		man[0] = man[1] = 0;
		int tot = 0;
		while(k--) {
   
			scanf("%s%s",hand,op);
			if(strcmp("keep",op)!=0) scanf("%d",&id);
			if(strcmp(hand,"left")==0) hands = 0;
			else hands = 1;
			if(strcmp(op,"take")==0) {
   
				man[hands] = st[id].top();
				st[id].pop();
			}
			else if(strcmp(op,"return")==0) {
   
				st[id].push(man[hands]);
				man[hands] = -1;
			}
			else {
   
				tot += man[hands];
				man[hands] = -1;
			}
		}
		if(man[0]!=-1) tot+=man[0];
		if(man[1]!=-1) tot+=man[1];
		printf("%d\n",tot);
	}
	return 0;
} 

第2题,计算电子显示器的刷新次数

题意:

        一个h*w的显示器,要在上面显示一个图像平移的动画。图像大小为q*p。(1<=p,q,h,w<=100)。 在显示器上面显示背景,然后图像要覆盖背景。图像开始的时候左上角的位置在(stx,sty)(可能是负数)每次图像向右移动dy,向左移动dx,屏幕的每个单元格,如果和上次的字符不一样,就需要刷新。问最少刷新几次?
T组输入,保证dx和dy不同时为0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值