网易2017秋招编程

网易2017秋招编程题 买苹果 1 问题建模 2 解题步骤 3 源码 阅读详情

网易2017秋招笔试

1

如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:
{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列,
{1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。

思路:递归,如果最左小于最右,合并左边,如果最右小于最左,合并右边,直到是回文(极限情况直接合成一个数),有点类似快排中的一小部分思路

#include <iostream>
using namespace std;

int getTimes(int* nums, int head, int tail) {
    int times = 0;
    int left = nums[head], right = nums[tail];
    while (head < tail && left != right) {
        if (left < tail) {
            ++head;
            left += nums[head];
            ++times;
        }
        else {
            --tail;
            right += nums[tail];
            ++times;
        }
    }
    if (head >= tail)
        return times;
    else
        times += getTimes(nums, ++head, --tail);
}

int main() {
    int n;
    while (cin >> n) {
        int nums[40];
        for (int i = 0; i < n; ++i) {
            cin >> nums[i];
        }
        cout << getTimes(nums, 0, n - 1) << endl;
    }
}

2

小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。
例如:半径的平方如果为25
优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。

思路:满足的点的横坐标绝对值 <= 半径 , 将给出的数开方,然后递减遍历,即可得到结果

#include<iostream>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        int res = 0;
        int x = (int)sqrt(n);
        while (x) {
            double y = sqrt(n - x * x);
            if (y - (int)y == 0) {
                res += 4;
            }
            --x;
        }

        cout << res << endl;

    }
}

3

小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…….
这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。
例如:
N = 4,M = 24:
4->6->8->12->18->24
于是小易最少需要跳跃5次,就可以从4号石板跳到24号石板

思路:
首先求得约数,存数组,计入动态规划的步数
可移动的步数随着前进,一直在更新
建立动态规划数组,初始化为0,将起点初始化为1
从起点开始计算可到达的点,若此点未到达过,则更新为到达此点需要的步数
若此点之前到达过,则比较到达步数,留较小的到达步数。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void getStep(int n, vector<int> &step) {
    for (int i = 2; i <= sqrt(n); ++i) {
        if(n % i == 0) {
            step.push_back(i);
            if (n / i != i) {
                step.push_back(n / i);
            }
        }
    }
}

int main() {
    int n, m;
    while (cin >> n >> m) {
        vector<int> dp(m + 1, 0);
        dp[n] = 1;

        for (int i = n; i <= m; ++i) {
            vector<int> step;
            getStep(i, step);
            if (dp[i] == 0)
                continue;
            for (int j = 0; j < step.size(); ++j) {
                if (step[j] + i <= m) {
                    if (dp[step[j] + i] == 0)
                        dp[step[j] + i] = dp[i] + 1;
                    else
                        dp[step[j] + i] = min(dp[i] + 1, dp[step[j] + i]);
                }
            }
        }

        if (dp[m])
            cout << dp[m] - 1 << endl;
        else
            cout << -1 << endl;
    }
}

4

一个只包含’A’、’B’和’C’的字符串,如果存在某一段长度为3的连续子串中恰好’A’、’B’和’C’各有一个,那么这个字符串就是纯净的,否则这个字符串就是暗黑的。例如:
BAACAACCBAAA 连续子串”CBA”中包含了’A’,’B’,’C’各一个,所以是纯净的字符串
AABBCCAABB 不存在一个长度为3的连续子串包含’A’,’B’,’C’,所以是暗黑的字符串
你的任务就是计算出长度为n的字符串(只包含’A’、’B’和’C’),有多少个是暗黑的字符串。

思路: DP
对于长度为n的字符串
f(n)表示总共的黑暗字符串的个数
s(n)表示在当前字符串中结尾两个字符相同的字符串的个数
d(n)表示在当前字符串中结尾两个字符不同的字符串的个数

即有
f(n) = s(n) + d(n)
f(n - 1) = s(n - 1) + d(n - 1)
长度为n的字符串比长度为n-1的字符串多出的个数应为
如果对于n-1中结尾两位字符相同的情况,则有3种情况可选
如果对于n-1中结尾两位字符不同的情况,则有2种情况可选
因此
f(n) = 3 * s(n - 1) + 2 * d(n - 1) = 2 * f(n - 1) + s(n - 1)

再寻找 s(n) d(n) 与 s(n - 1) d(n - 1)的关系
首先
s(n) + d(n) = 3 * s(n - 1) + 2 * d(n - 1)
对于字符串中末位两位相同的情况
如 ***AA
在增加一位字符之后的情况是 AAA, AAB, AAC
此时后两位字符相同的情况占1/3

对于字符串中末位两位不同的情况
如 ***AB
在增加一位字符之后的情况是 ABA, ABB
此时后两位字符相同的情况占1/2

再由 s(n) + d(n) = 3 * s(n - 1) + 2 * d(n - 1)
可以得到
s(n) = s(n - 1) + d(n - 1) = f(n - 1)
d(n) = 2 * s(n - 1) + d(n - 1)

因此得到最终结果

f(n) = 3 * s(n - 1) + 2 * d(n - 1)
= 2 * f(n - 1) + s(n - 1)
= 2 * f(n - 1) + f(n - 2)

#include<iostream>
#include<math.h>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        long long int dp[50] = { 0 };
        dp[1] = 3; 
        dp[2] = 9;
        for (int i = 3; i <= n; ++i) {
            dp[i] = 2 * dp[i - 1] + dp[i - 2];
        }
        cout << dp[n] << endl;
    }
}

5

对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?

逆序,考虑前导0的情况

#include <iostream>
#include <string>
using namespace std;

int rev(int x);

int main() {
    int x, y;
    cin >> x >> y;
    cout << rev(rev(x) + rev(y)) << endl;
    system("pause");
    return 0;
}

int rev(int x) {
    string s = to_string(x);
    int len = s.size();
    for (int i = 0; i < len / 2; ++i) {
        swap(s[i], s[len - i - 1]);
    }
    x = stoi(s);
    while (x % 10 == 0){
        x /= 10;
    }
    return x;
}

6

小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.
现在给出一个N,需要求出 f(1) + f(2) + f(3)…….f(N)
例如: N = 7
f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 + 7 = 21
小易计算这个问题遇到了困难,需要你来设计一个算法帮助他。

思路:找规律:如果这个数本书是奇数,直接返回, 否则将这个数除以2,知道数为奇数为止

代码

#include <iostream>
using namespace std;

int f(int x) {
    while (x) {
        if (x % 2 == 1)
            break;
        else
            x >>= 1;
    }
    return x;
}

int main() {
    int n;
    while (cin >> n) {
        int res = 0;
        for (int i = 1; i <= n; ++i)
                res += f(i);
        cout << res << endl;        
    }
}

7

小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。

思路: 贪心遍历即可
后续实际做的时候,可以发现有规律, 大于10的偶数均可以找到解,并且数列存在规律

#include <iostream>

using namespace std;

int findN(int n) {
    int round = n / 6;
    for (int i = 0; i <= round; ++i) {
        if ((n - i * 6) % 8 == 0)
            return i + (n - i * 6) / 8;
    }
    return -1;
}

int main() {
    int n;
    while (cin >> n) {
        cout << findN(n) << endl;
    }
}

8

A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。

计算结果满足条件即可,详见代码

#include<iostream>

using namespace std;

int main() {
    int subAB, subBC, addAB, addBC;
    int A, B, C;
    cin >> subAB >> subBC >> addAB >> addBC;
    A = (subAB + addAB) / 2;
    B = (addAB - subAB) / 2;
    C = (addBC - subBC) / 2;
    if (A + B == addAB && A - B == subAB && B + C == addBC && B - C == subBC)
        cout << A << ' ' << B << ' ' << C << endl;
    else
        cout << "No" << endl;

    system("pause");
    return 0;
}
优雅的点--网易2017秋招模拟考编程题2 时间限制:1秒 空间限制:32768K 小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。 例如:半径的平方如果为25 优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。  输入描述: 输 阅读详情

相关推荐

《活用数据——驱动业务的数分析实战》读书笔记 (实战篇)

第四章、战略分析案例解析         如思维篇所述,分析思路是从研究目的到研究内容的分解过程。因此需要考虑如下两个问题: 战略分析的研究目的 战略分析的研究内容 1、研究目的:战略选择         战略分析的研究目的是帮助企业进行战略选择,选择适合自己的目标市场。需要回答以下两个问题: 市场吸引力:这个市...

Xiaozhu的博客 3698

网易2017秋招编程题集深度拆解:从模拟到矩阵快速幂的算法主线

在互联网校招笔试中,编程题往往承担着第一轮筛选的作用,而算法能力正是决定能否突围的关键。从基础的模拟与数学推导,到动态规划的状态设计,再到二分答案与矩阵快速幂的进阶应用,这些核心算法共同构成了一条典型的笔试算法主线。掌握最大公约数、方程组回代验证等细节,能有效减少失分;理解DP状态定义和正负号乘积最值问题,则能应对更复杂的动态规划模型。矩阵快速幂作为压轴题型,更考验对线性代数与倍增思想的综合运用。这套网易2017秋招编程题集正是以难度梯度合理、考点覆盖全面著称,适合作为校招备战的入门基准与查漏补缺清单。

weixin_30399155的博客 429

麒麟v10(ky10.x86_64)升级——openssl-3.2.2、openssh-9.8p1

执行命令: make -j 4 && make install 这里要等待一段时间,等待编译完成。执行命令: ./configure --prefix=/usr/local/src/zlilb。执行命令: ./config --prefix=/usr/local/src/openssl。执行命令: make -j 4 && make test && make install。执行命令: make -j 4 && make install。执行命令: /etc/init.d/sshd restart。

X_yufei的博客 7428

回文序列--C语言

#include <stdio.h> #include <string.h> int main() { char str[100], i, n; scanf("%s",str); n = strlen(str); for(i=0;i<n/2;i++) { if(str[i]!=str[n-i-1]) { printf("不是回文...

七月❤的博客 1550

python零基础入门到精通,python入门到精通教程

坚持到了这儿,恭喜你,表示你有做开发的潜力,其实我想说的上面的内容还是刚刚开始,刚开始大家不需要多么精通了解这些内容,除了Python方面的知识,每个部分掌握一点儿能进行基本开发就好,主要是不断练习,让自己跳出「舒适区」,进入「学习区」,但是又不进入「恐慌区」,不断给自己「喂招」。上述这份完整版的Python全套学习资料已经上传优快云官方,朋友们如果需要可以扫描下方二维码免费获取【保证100%免费】

YYmmsss的博客 3438

Google antigravity 不支持你所在地区?手把手教你把账号改成支持地区

Google antigravity功能火爆,但国内老账号根本用不了🤬本文分享几种有效的账号国家地区切换方法,最快几分钟就能让antigravity直接亮起🔥

XiaoqiangClub的博客 2万+

由一个C语言递归判断回文数的程序产生的回忆

今天,看一位学长的博客《递归的力量》,受到的启发还是很多的,以前写递归程序,从来都没有好好想过,这里为什么要用到递归,以及什么样的情况要用到递归。引用他博文中的一句话,也是思考的一个方式:可以用递归实现的场景要满足两个条件: 第一:这个问题是否可以分解为形式相同但规模更小的问题? 第二:如果存在这样一种分解,那么这种分解是否存在一种简单情境? 有一个例子是用递...

蓝色妖姬 655

5. SAP UI5 视图控制器(Controller)初探

本教程的前一个步骤也就是第四个步骤,我们了解了 SAP UI5 XML 视图的使用方法。在该步骤里,我们在 XML 视图里声明了一个 Text 控件实例,该控件位于 sap.m 这个命名空间内。 本步骤会继续接触 SAP UI5 MVC 框架中三大基石的另一块:C - Controller,即控制器。 先看看本步骤完成之后,我们得到的 SAP UI5 应用能实现一个什么样的效果。 访问如下 url: http://localhost:8080/webapp/index.html 能看到一个 Say Hell

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4595

网易2017秋招编程题集合--完全解析

前言一些大公司的真题里面总有些含金量很高的几个题,网易2017秋招编程题集合里面也有几个题是非常好的,比如说第三题跳石板,第四题黑暗的字符串都是很好的题目。特别是第四题的那种思路之前几乎完全没有接触过,还有第六题最大的奇约数里面还有部分数学思维在里面。1.回文序列题目描述:如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如: {1, 2, 1}, {15, 78, 78,

有图有真相 1699

一文吃透 Tools for Applying SAP Notes:从 SNOTE、TCI 到 Solution Manager 与 SAP Cloud ALM

本文系统梳理了SAP技术与运维团队应用SAP Notes的高效工具与方法,涵盖On-Premise与云环境。文章首先阐述了精研SAP Notes工具的必要性,指出其是实施错误修复、法务变更和性能改进的关键载体。随后详细介绍了SNOTE、TCI、Solution Manager、Cloud ALM和Maintenance Planner等核心工具的定位与适用场景,并通过采购异常案例展示了标准更正流程。针对复杂修复场景,文章提出了TCI的批量处理方案,并强调将Note实施纳入变更治理流程的重要性。最后总结了三种

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 354

YOLOv改进 | YOLOv11添加WTConv小波卷积,能够更有效地捕捉局部和全局特征

在计算机视觉目标检测领域,YOLO(You Only Look Once)系列算法凭借“单阶段检测”的高效性(一次前向传播同时完成目标定位与分类),已成为工业界与学术界的主流选择。从YOLOv1到YOLOv11,算法持续迭代优化,在速度与精度之间寻求平衡,广泛应用于自动驾驶、智能安防、工业质检等场景。为解决上述问题,本文提出一种基于,将输入特征图分解为不同频率的子带(低频全局信息与高频局部细节),并分别通过卷积操作提取局部与全局特征,最后融合多尺度特征,从而更有效地捕捉目标的局部细节与全局结构。

走向CTO的路上... 1248

c++实现求解回文序列问题

【问题描述】如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。现在给出一个数字序列,允许使用一种转换操作:选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的...

流牧的博客 2648

【WRF-Urban】增加动态空间热排放数据以替换人为热排放参数

增加动态空间热排放数据以替换人为热排放参数

WW、forever的博客 1044

【牛客网】网易2017秋招编程题集合

1、[编程题] 回文序列 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列,  {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。 现在给出一个数字序列,允许使用一种转换操作: 选择任意两个相邻的数,然后从序列移除这两个数,并用

小拳头的博客 2636

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

网易2017秋招编程题:买苹果 [python]

''' [编程题] 买苹果 时间限制:1秒 空间限制:32768K 小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。  可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。  输入描述: 输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果 输出描述

ChrisMinions小站 1692

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

网易2017秋招编程题全解析:四道真题拆解校招算法必考点

算法编程题是互联网校招笔试的核心门槛,掌握常见题型的解题模型比死记代码更重要。以网易2017秋招编程题为例,这类题目通常融合字符串处理、数学推导、动态规划与贪心策略,重点考察候选人的建模能力和边界条件把控。从数字翻转中的前导零与多组输入处理,到计算糖果的方程验证,再到跳石板的最短步数动态规划以及不要二中的二维贪心标记,每一题都映射出笔试中的高频考点。理解这些典型问题,不仅有助于应对大厂笔试题,还能提升工程实践中的代码稳健性。本文围绕这套经典题目,拆解真题思路,并总结在线笔试中的输入输出优化、边界自测和答题策

weixin_34034670的博客 340

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

网易2017秋招编程题全解析:从字符串到动态规划的笔试标尺

在互联网大厂秋招的备战中,笔试编程题始终是筛选候选人的关键环节。无论是字符串处理、集合去重,还是数学推导、动态规划与搜索剪枝,算法功底与边界处理能力都直接影响最终结果。网易2017秋招编程题集合凭借稳定的难度曲线与典型的大厂出题风格,被众多求职者视为笔试校准标尺。这套题目覆盖了从基础输入输出、EOF读取、set去重到贪心枚举、方程回代验证、DP状态转移等多个高频考点,既考察代码效率,也考察工程实践中的细节严谨性。通过对代表性真题的逐题拆解与代码实现,可以快速定位自身薄弱点,提升笔试实战能力,为秋招冲刺提供可

weixin_34204722的博客 331

网易2017秋招编程题代码

一、回文序列 package 网易编程题; import java.util.ArrayList; import java.util.Scanner; import java.util.*; public class Main { ArrayList num=new ArrayList(); void print (int st,int ed){ int time=

shuangzitianyu的博客 345

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, ...

weixin_30539625的博客 126

网易2017秋招编程题

小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。 例如:半径的平方如果为25 优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。 输入描述: 输入为一个整数,即为圆半径的平方,范围在32位int范围内。

xiaojinIT的博客 525

网易2017秋招编程题集合+自己的结果

前言 周末利用无聊的时间见识了一下网易的秋招编程题也尝试用javascript来实现,总体的难度对我来说简直是变态-_-!,不过最后总算在自己的能力范围内解决了六道,其中有一道是参考了另一位大神的思路最终用代码实现,还有一道反正我怎么想也想不出来~~有兴趣的大神们可以尝试一下让我观摩观摩哈哈,下面放题 1.回文序列 题目:如果一个数字序...

weixin_33811539的博客 128

网易2017秋招编程题集合

[编程题]回文序列 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列,  {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。 现在给出一个数字序列,允许使用一种转换操作: 选择任意两个相邻的数,然后从序列移除这两个数,并用

First_sight的专栏 2267

跳石板——网易2017秋招编程题

题目描述 小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3… 这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。 例如: N = 4,M = 24: 4->6-&g...

weixin_38933749的博客 280
上一篇: [LeetCode]492. Construct the Rectangle
下一篇: [LeetCode]111. Minimum Depth of Binary Tree
charon____
博客等级 码龄11年 3粉丝 202原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值