7.2 疯狂游戏 游戏开发实习生 研发岗笔试
编程题:
-
(20分)输入k和target,k在数组里,那么2k+1或者3k+1也在数组里,问数组中有无等于target的数,若有则输出true,没有则输出false
-
(30分)输入width和一个vector像图数组,输出按照垂直翻转的像素图,4个数表示一个像素点
大概要求的输入输出效果如下
输入:2,[1,2,3,4,2,2,2,2,3,3,3,3,4,4,4,4]
输出:[2,2,2,2,1,2,3,4,4,4,4,4,3,3,3,3]
主观题:
(50分)
讲述一下你参与制作过的一款游戏:
-
制作的技术点
-
时间复杂度/空间复杂度的分析
-
应用到了什么设计模式
-
设计上有什么不足,相应的解决方案?
都是产生的不足了怎么会解决(
-
遇到了什么挑战
编程题提交的代码:
1.通过85.71%(题面完全没给数的范围,所以负数有可能要特殊处理?后来加了dfs2也没过最后一个点)
class Solution {
public:
int t;
bool flag=0;
void dfs(int x)
{
if(x>t||flag==1) return;
if(x==t)
{
flag=1;
return;
}
if((t-1)%2==0) dfs(x*2+1);
if((t-1)%3==0) dfs(x*3+1);
return;
}
void dfs2(int x)
{
if(x<t||flag==1) return;
if(x==t)
{
flag=1;
return;
}
dfs(x*2+1);
dfs(x*3+1);
return;
}
bool kInArray(int k, int target)
{
t=target;
if(k<0&&t<0) dfs2(k);
else dfs(k);
if(flag==1) return 1;
return 0;
}
};
2.通过100%
class Solution {
public:
vector<int> flipImage(int width, vector<int>& pixels)
{
int a[width*4+1];
vector<int> v;
for(int i=0;i<pixels.size();i++)
{
a[i%(width*4)]=pixels[i];
if((i+1)%(width*4)==0)
{
for(int j=width;j>=1;j--)
{
for(int k=(j-1)*4;k<=(j-1)*4+3;k++)
v.push_back(a[k]);
}
}
}
return v;
}
};