23.07.02疯狂游戏笔试

7.2 疯狂游戏 游戏开发实习生 研发岗笔试

编程题:

  1. (20分)输入k和target,k在数组里,那么2k+1或者3k+1也在数组里,问数组中有无等于target的数,若有则输出true,没有则输出false

  2. (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. 制作的技术点

  2. 时间复杂度/空间复杂度的分析

  3. 应用到了什么设计模式

  4. 设计上有什么不足,相应的解决方案?

    都是产生的不足了怎么会解决(

  5. 遇到了什么挑战

编程题提交的代码:

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;
    }
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海蛋2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值