网易游戏笔试题

该题目的要求是 判断str1和str2能否归并成为str3,递归的思路是正确的bool helper(string &str_x,string &str_y,int x,int y){
        while(x<str_x.size()&&y<str_y.size()){
            if(str_x[x]==str_y[y]){
                ++x;
                ++y;
            }
            else{
                return false;
            }
        }
        if(x==str_x.size()&&y==str_y.size())
            return true;
        else
            return false;
}
bool helper(string &str1,string &str2,string &str3,int m,int n,int k){

    if(m==str1.size()){
        return helper(str2,str3,n,k);
    }
    else if(n==str2.size()){
        return helper(str1,str3,m,k);
    }
    else if(k==str3.size()){
        return false;
    }
    else {
        if(str1[m]==str3[k]&&str2[n]!=str3[k])
            return helper(str1,str2,str3,m+1,n,k+1);
        else if(str1[m]!=str3[k]&&str2[n]==str3[k])
            return helper(str1,str2,str3,m,n+1,k+1);
        else
            return helper(str1,str2,str3,m+1,n,k+1)||helper(str1,str2,str3,m,n+1,k+1);
    }
}
int main(){
    int nums;
    cin>>nums;
    string str1,str2,str3;
    for(int i=0;i<nums;++i){
        cin>>str1>>str2>>str3;
        int m=0,n=0,k=0;//m,n分别指向str1和str2的第0个元素
        cout<<helper(str1,str2,str3,0,0,0)<<endl;
    }
    return 0;
}

下面附上原来的错误代码
int main(){//str1:bcf str2:acde str3:abcdcef
    int nums;
    cin>>nums;
    string str1,str2,str3;
    for(int i=0;i<nums;++i){
        cin>>str1>>str2>>str3;
        int m=0,n=0,k=0;//m,n分别指向str1和str2的第0个元素
        bool flag=true;
        while(m<str1.size()&&n<str2.size()&&k<str3.size()){
            if(str1[m]==str3[k]){
                ++m;
                ++k;
            }
            else if(str2[n]==str3[k]){
                ++n;
                ++k;
            }
            else{
                flag=false;
                break;
            }
        }
        while(m<str1.size()&&k<str3.size()){
            if(str1[m]==str3[k]){
                ++m;
                ++k;
            }
            else{
                flag=false;
                break;
            }
        }
        while(n<str2.size()&&k<str3.size()){
            if(str2[n]==str3[k]){
                ++n;
                ++k;
            }
            else{
                flag=false;
                break;
            }
        }

        if(m==str1.size()&&n==str2.size()&&k==str3.size())
            cout<<flag<<endl;
        else
            cout<<0<<endl;
    }
    return 0;
}

 
时间: 2024-10-19 18:53:09

网易游戏笔试题的相关文章

网易游戏 笔试题

相当于是买股票问题,整个过程中只允许交易两次left[i]表示第i天左边并且包括第i天的最大收益right[i]表示第i天右边并且包括第i天的最大收益left[i]+right[i]的最大值即为整个股票问题的最大收益#include <iostream> #include <string> using namespace std; int main(){ int n; cin>>n; int *arr=new int[n]; for(int i=0;i<n;++i

2018年网易Java笔试题

OOP三特性 封装: 继承: 多态: Java中如何实现多继承 实现多个接口 使用内部类 Java对象生成过程 4.HashTable和HashMap的区别 ü  历史原因:Hashtable是基于陈旧的Dictionary类实现的,HashMap是Java 1.2引进的一个Map接口的一个实现 ü  同步性:Hashtable是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,而HashMap则是异步的,因此HashMap中的对象并不是线程安全的,因为同步的要求会影响执行

2016网易技术类笔试题

20个选择题  银行家算法 mysql c++  网络都有 3个问答题 1.生成只有一个实例的类 2.A[n]构造B[n] 不能使用乘法 3.路由器相关协议 2个编程  超简单,大一水平就可以了

关于一道游戏笔试题

如何出BOSS. 每两个小时要随机出一个BOSS提供: 随机函数unsigned int random(void), 返回值是一正随机整数, 取当前时间函数unsigned int GetCurTime(void), 返回值是开机到当前的秒数 出BOSS函数NewBoss(void). 题目是,每两个小时必定出一个,但出现的时间随机,做题时间限制十五分钟 我的答案 int number=-1; int count=0; void start(){ } void update(){ if(numb

python 饥饿的小易(网易笔试题)

本周早些时候,学弟给我发了一道网易的笔试题,饥饿的小易,感觉有点意思-分享给大家 题目描述: 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者c.因为使用神秘力量要耗费太多体力,所以它只能使用神秘力量最多100,000次.贝壳总生长在能被1,000,000,007整除的位置(比如:位置0,位置1,000,000,007,位置2,000,000,014等).小易需要你帮忙计算最少需要

九宫格----记网易游戏2015年研发类笔试题

最近一直在找工作,昨天参加了网易游戏的研发类笔试,题量比较大,大题有6个. 1.最小字典序字符串, 2.递归绘图函数转非递归 3.游戏编程中常用的数据结构4叉树,有三问,一问是写出如何判断点在矩形中和判断两矩形是否相交,第二问是写创建四叉树的实现,第三问是如何根据已知的矩形块,在四叉树中寻找包含的物体. 4.KD树,英文题,没怎么看,第一问问给出的一个算法的复杂度,并分析:第二问是自己实现算法(没怎么看) 5.求带权二叉树的最长路径,权值可以为负值 6.九宫格,就是手机手势密码.有三问,一问是如

DP - 2016网易杭研笔试题A

2016网易杭研笔试题A Problem's Link ---------------------------------------------------------------------------- Mean: 有一个边长为n的立方体,内部的每一个小立方体内有一个数字.如果取了当前这个小立方体,则小立方体的: 1.上下相邻两层将会消失; 2.前后相邻两列将会消失; 3.左右相邻两个将会消失; 找出一种取法,使得取到的数的sum最大,输出sum. analyse: 现场面试时挂在这题上了

&lt;转&gt;网易2016实习生前端笔试题部分总结

网易2016实习生前端笔试题部分总结 原文地址:http://www.cnblogs.com/venoral/p/5325202.html 这只是部分题,答案为个人观点如有错误欢迎指出,感觉考点都挺基础,但是很注重考细节方面,通过整理也知道自己在CSS3和HTML5,网络知识等方面的不足还是得多学多练多思考.攒rp,希望自己在明天360笔试中能轻松答过~ css 1.多选 //HTML <p>很长的一段文字,很长的一段文字,很长的一段文字,特别长的文字</p> //CSS p{ w

网易2018校招笔试题-数组能不能满足重排列后任意相邻的元素积都是4的倍数

今天看了一下网易最新的校招笔试题: 小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}.牛博士给小易出了一个难题:     对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数.     小易现在需要判断一个数列是否可以重排之后满足牛博士的要求. 代码如下: 1 import java.util.Scanner; 2 3 /** 4 * Created by jy on 2017/9/9. 5