深信服历年秋招笔试真题
如需获取完整资料,请点击下方链接领取《2024校招笔试真题秘籍》(实时更新中)
不收费,3人组团即可一块免费领取!限量免费10000个名额
手机端点击免费领取:https://www.nowcoder.com/link/campus_xzbs2
电脑端请扫码领取:
1、Cuboid
【题目描述】一个长方体,长宽高分别为x,y,z,都为自然数。
现在要把若干个相同的立方体摆成高为N的一根柱形体。
每层摆1个,如果两种摆法的高度是一样的,则认为这两种摆法等价,所以每层只有三种摆法。
求一共有多少种摆法。
输入描述:
第一行为一个数字N,N>=1且N<=100
第二行为长方体的长宽高,x、y、z都为无符号整数,按升序排列。
输出描述:
摆法总数,已知该总数会小于10000000
【解题思路】
动态规划。
dp[i] = dp[i-x] + dp[i-y] + dp[i-z]
【参考代码】
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef unsigned int U32; unsigned long long cnt[1000]; unsigned long long calc(U32 n, U32 x, U32 y, U32 z) { U32 i; cnt[0] = 1; for (i = 0; i <= n; ++i) { if (i >= x && cnt[i - x]) cnt[i] += cnt[i - x]; if (i >= y && cnt[i - y]) cnt[i] += cnt[i - y]; if (i >= z && cnt[i - z]) cnt[i] += cnt[i - z]; } return cnt[n]; } int main() { U32 n; U32 x, y, z; scanf("%u\n", &n); scanf("%u %u %u", &x, &y, &z); printf("%llu\n", calc(n, x, y, z)); return 0; }
2、IPrange
【题目描述】一个数字段由首尾两个数字标识,表示一个自然数集合,
比如数字段[beg, end)表示从beg到end之间的所有自然数,
包含beg,但不包含end。
有若干个数字段,这些数字段之间可能有重叠,
怎么把这些数字段合并去重,用最少个数的数字段来表示。
合并前后,整个集合包含的数字不发生变化。
输入描述:
第一行为数字N,表示接下来有N个数字段(N<=100000)
第二行开始一共有N行,每行两个数字,分别表示一个数字段的beg和end
(beg和end为无符
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024软件笔试真题+答案合集 文章被收录于专栏
本专刊由牛客官方团队打造,主要讲解名企校招技术岗位的笔试题,内容中包含多个名企的笔试真题,附有题目思路及参考代码