23.07.02疯狂游戏 游戏开发实习生 研发岗笔试
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; } };