关闭

网易2018校园招聘编程题真题集合 (部分)

标签: 校园招聘网易2018算法招聘笔试题编程
161人阅读 评论(0) 收藏 举报
分类:

第一题:

小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。

魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币

小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。


解题思路:

看到2x+1 和 2x+2 ,这两个式子之后很明显就可以知道一个可以得到奇数一个可以得到偶数。但是如何知道从0 开始,先使用哪个魔法机器呢?

既然从前面不知道怎么向后推算,那就直接利用结果n 向前推算吧!还是没有什么思路,当然需要用笔画一画了。


稍微一画,立马就有思路了!如果令n%2==0,那么到达n这一步则需要通过魔法机器2,如果!=0 那么则是通过魔法机器1。然后设置好限制条件,就很容易的能够将路径倒序的装入数组中。最后,在倒过来打印就能够知道应该怎么选择魔法机器了!


示例代码:

#include"stdio.h"
int main()
{
    int array[10];            //倒叙记录每次选择的魔法机器
    int n,i = 0,length = 0;
    scanf("%d",&n);
    while(n>0){
        length = i;
        if(n%2==0){
            n = n/2-1;
            array[i] = 2;
        }else{
            n = n/2;
            array[i] = 1;
        }
        i++;
    }
    for(i = length; i >= 0; i--){
        printf("%d",array[i]);
    }
    return 0;
}


第二题:

为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1.


解题思路:

我一般写代码前都会先在纸上写出大致思路,然后就直接写代码,接着调试!看到这个题和以前课上老师布置的一个作业挺像,只不过作业仅仅要求将一个数字反过来其实还都是一样!用n%10 取余数,用数组记录下来。当然在模10之前应该先把最后的所有0 过滤掉!(也不用多说了,上代码!)


示例代码:

#include"stdio.h"
int main(){
    int n,m = 0;     //n为输入的数字,m为反转过来的数字
    int jinzhi=1;   
    int length = 0;
    int arrayM[10]; //存放被拆开的数字
    scanf("%d",&n);
    int l = n;      //记录n的值,最后用到
    while(n%10==0)  //将n 后面所有的0过滤掉
        n=n/10; 
    while(n>0){     //拆数
        arrayM[length] = (n%10);
        length++;
        n = n/10;
    }
    for(int i = 0;i<length;i++){    //将数字组装起来
        jinzhi = 1;
        for(int j = 1;j<length-i;j++)
            jinzhi = jinzhi*10;
        m = arrayM[i]*jinzhi+m;
    }
    printf("%d\n",m+l);            //输出两数字之和
    return 0; 
}

第三题:

一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:'aaa','bb','c'。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。


解题思路:

首先明确一下,碎片最短为1,最少存在一个碎片。设置一个游标,从左向右遍历字符串(用到while循环结构)。然后判断当前字符和下一个字符是否相等,如果相等则当前碎片的长度加一,游标移向下一个进入下一次循环。如果不相等,则开始重新记录一个碎片,游标移向下一个进入下一次循环。


示例代码:

#include"stdio.h"
int main(){
    int length[50];//分别存放每一个碎片的长度,最大为50
    char str[50];  //存放待检查的字符串
    int number=1;  //记录碎片的数量
    double avglength;
    int j=0;
    //每个碎片长度最少为1
    for(int i=0;i<50;i++)
        length[i] = 1;
    scanf("%s",str);
    while(str[j]!='\0'){
        if(str[j]==str[j+1]){
            length[number-1]++;
        }
        else{
            number++;//碎片数量加一
        }
        j++;        //游标移向下一个字符
    }
    int sum = 0;
    int num=number-1;
    for(int i=0;i<num;i++)
        sum = sum+length[i];
    avglength = sum/(num*1.0);
    printf("%.2f",avglength);
    return 0;
}


未完待续... ...

















1
0
查看评论

魔法币问题

题目原处:https://www.nowcoder.com/test/question/32c71b52db52424c89a565e4134bfe4e?pid=6910869&tid=11204263 [编程题] 魔法币 时间限制:1秒 空间限制:32768K 小易准备...
  • bianenze
  • bianenze
  • 2017-09-18 18:34
  • 298

魔法币问题

#include #include #include #include using namespace std; void magic_money(int money) { unsigned int local, even_odd; if(money%2==1) { ...
  • lyy19881024
  • lyy19881024
  • 2017-12-02 10:55
  • 17

网易2018校招编程题集合

1.彩色的砖块 小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮...
  • baidu_32048673
  • baidu_32048673
  • 2017-08-15 18:25
  • 579

[网易]2018校园招聘编程题真题集合

Andrew Zhang Sep 16, 2017题目: 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。 魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币 ...
  • zhangzhengyi03539
  • zhangzhengyi03539
  • 2017-09-16 23:09
  • 338

网易2018校园招聘编程题真题集合

[编程题] 魔法币 时间限制:1秒 空间限制:32768K 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。 魔法机器1:如果投入x个魔法币,魔法机器...
  • m0_37975647
  • m0_37975647
  • 2017-10-03 17:05
  • 637

网易2018校招编程题集合7

小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列...
  • xiao_dondon
  • xiao_dondon
  • 2017-08-13 23:32
  • 750

网易2018校园招聘编程题真题 合唱

[编程题] 合唱 时间限制:2秒 空间限制:131072K 小Q和牛博士合唱一首歌曲,这首歌曲由n个音调组成,每个音调由一个正整数表示。 对于每个音调要么由小Q演唱要么由牛博士演唱,对于一系列音调演唱的难度等于所有相邻音调变化幅度之和, 例如一个音调序列是8, 8, 13, 12, 那么...
  • phoenix198425
  • phoenix198425
  • 2017-10-17 18:08
  • 104

网易2018校招内推编程题(Python描述)

总结一下网易2018内推的测试题,我看python的比较少,所以献上自己的low代码,都AC过的,大毛病应该没有,看来基础还是得抓紧练习! [编程题] 彩色的砖块时间限制:1秒空间限制:32768K 小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的...
  • MrLevo520
  • MrLevo520
  • 2017-08-14 20:12
  • 1334

网易2018校招编程题集合8

小易非常喜欢拥有以下性质的数列: 1、数列的长度为n 2、数列中的每个数都在1到k之间(包括1和k) 3、对于位置相邻的两个数A和B(A在B前),都满足(A 例如,当n = 4, k = 7 那么{1,7,7,2},它的长度是4,所有数字也在1到7范围内,并且满足第三条性质,所以小易是喜...
  • xiao_dondon
  • xiao_dondon
  • 2017-08-14 20:59
  • 1002

网易2018校园招聘编程题真题集合3字符串碎片

这道题不难,需要存下碎片的个数,就遍历字符串,保存刚刚遍历过的字符,如果这个字符和刚刚的字符不同,说明到了一个新的碎片,碎片个数+1. 最后存储保留两位的double,用一个char数组来存,sprintf来写进去。 #include #include using namespace s...
  • u012528000
  • u012528000
  • 2017-12-12 21:51
  • 153
    个人资料
    • 访问:126520次
    • 积分:3214
    • 等级:
    • 排名:第12600名
    • 原创:187篇
    • 转载:4篇
    • 译文:9篇
    • 评论:33条
    RUNNING|~_~|My web
    微信公众号
    课程设计、视频资源、有料趣文
    Worldhello


    微信公众号:Worldhello
    期待您的关注!
    博客专栏
    最新评论