• 2023年秋招软开大厂笔试在线编程记录


    正在秋招,不断更新中......

    目录

    正在秋招,不断更新中......

    小米笔试:

    1、题目描述:

    测试通过用例:

    2、题目描述:

    测试通过用例:

    3、题目描述:

    测试通过用例:

    深信服笔试

    1、题目描述:

    测试通过用例:

    2、题目描述

    测试通过用例:

    3、题目描述

    测试通过用例:


    小米笔试:

    1、题目描述:

    小程打牌花店买花,看到花店有N个花架,每个花架上有4盆不同颜色的花,颜色分别为红白黄粉。小程看了一下所有所有花的价格,发现即便是相同颜色的花,价格也可能不同。

    小程手里有1000块钱,4个颜色的花各想买一盆;如果把钱全花光,那么有多少种买的选择呢?

    输入描述:

            N<=10000,花的价格都为整数,范围1到10000

    输入格式为:

            第一行为N

            接下来N行,每行4个整数,空格分开,分别表示第i(1<=i<=N)个花架上四个额色(红,白、黄、粉)的价格

    输出描述:

            一个整数,表示不同买法的个数

    样例输入

                    3

            250 250 250 250

            156 201 205 400

            205 190 100 250

    样例输出

            4

    提示:

    样例解释,有如下4种选择:

            1,1,1,1

            1,1,1,3

            1,1,3,2

            3,3,2,2

    数字表示花架编号,如1,1,3,2表示四个颜色分别从花架1,1,3,2选取,价格分别为250,250,100,400,总和正好为1000元

    测试通过用例:

    1. #include
    2. #include
    3. using namespace std;
    4. int main() {
    5. int N;
    6. cin >> N;
    7. vectorint>> flowers(N, vector<int>(4));
    8. for (int i = 0; i < N; i++) {
    9. for (int j = 0; j < 4; j++) {
    10. cin >> flowers[i][j];
    11. }
    12. }
    13. int count = 0;
    14. for (int i = 0; i < N; i++) {
    15. for (int j = 0; j < N; j++) {
    16. for (int k = 0; k < N; k++) {
    17. for (int l = 0; l < N; l++) {
    18. int sum = flowers[i][0] + flowers[j][1] + flowers[k][2] + flowers[l][3];
    19. if (sum == 1000) {
    20. count++;
    21. }
    22. }
    23. }
    24. }
    25. }
    26. cout << count << endl;
    27. return 0;
    28. }

    存在问题:

            算法占用内存太大,部分测试无法通过。

    2、题目描述:

            春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如: 153=1……3+5^3+3^3。现在要求输出所有在m和n范围内的水仙花数。

    输入描述

            输入数据有多组,每组占一行,包括两个整数m和n (100<=m<=n<=999) 。

    输出描述

            对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开: 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。

    样例输入

            100 120

            300 380

    样例输出

            no

            370 371

    测试通过用例:

    1. #include
    2. #include
    3. using namespace std;
    4. // 计算一个数的各位数字的立方和
    5. int calculateSumOfCubes(int num) {
    6. int sum = 0;
    7. while (num > 0) {
    8. int digit = num % 10;
    9. sum += pow(digit, 3);
    10. num /= 10;
    11. }
    12. return sum;
    13. }
    14. int main() {
    15. int m, n;
    16. while (cin >> m >> n) {
    17. bool found = false;
    18. for (int i = m; i <= n; i++) {
    19. if (i == calculateSumOfCubes(i)) {
    20. if (found) {
    21. cout << " ";
    22. }
    23. cout << i;
    24. found = true;
    25. }
    26. }
    27. if (!found) {
    28. cout << "no";
    29. }
    30. cout << endl;
    31. }
    32. return 0;
    33. }

    3、题目描述:

    题目描述:

            数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的m项和。

    输入描述

            输入数据有多组,每组占一行,由两个整数n (n<10000) 和m(m<1000)组成,n和m的含义如前所述。

    输出描述        

            对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

    样例输入

            81 4

            2 2

    样例输出

            94.73

            3.14

    测试通过用例:

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. int main() {
    6. double n, m;
    7. while (cin >> n >> m) {
    8. double sum = 0.0;
    9. double current = n;
    10. for (int i = 0; i < m; i++) {
    11. sum += current;
    12. current = sqrt(current);
    13. }
    14. cout << fixed << setprecision(2) << sum << endl;
    15. }
    16. return 0;
    17. }

    深信服笔试

    1、题目描述:

    安全网关可以识别和拦截病毒,假设使用[a-z]的26个字母做为病毒代号,每个字母表示一种病毒,假设病毒种类<=26。当未开启拦截模式时,安全网关在一段时间内识别到的入侵病毒详情使用字符串s来记录,当这些病毒入侵到内网各个主机时,请计算主机存在病毒组合个数(与顺序无关,例如ab与ba是一样的)。

    输入描述

            需要统计的字符串

    输出描述

            输入字符串中不重复字符组成的字符集合个数

    示例1:

    输入:

            aa

    输出:

            1

    说明

            组合有['a'],需要去掉重复的字符

    示例2:

    输入:

            ab

    输出:

            3

    说明

            组合有['a','b','ab'],需要去掉重复的字符

    测试通过用例:

    1. #include
    2. #include
    3. #include
    4. #include
    5. // 递归函数,用于生成字符集合的组合
    6. void generateCombinations(const std::string& input, int start, std::string currentCombination, std::set& combinations) {
    7. // 将当前组合添加到集合中,但不添加空集和有重复字符的组合
    8. if (!currentCombination.empty() && currentCombination.size() == std::set<char>(currentCombination.begin(), currentCombination.end()).size()) {
    9. combinations.insert(currentCombination);
    10. }
    11. // 从当前位置开始,递归生成更长的组合
    12. for (int i = start; i < input.length(); ++i) {
    13. generateCombinations(input, i + 1, currentCombination + input[i], combinations);
    14. }
    15. }
    16. int main() {
    17. std::string input;
    18. std::cout << "请输入需要统计的字符串: ";
    19. std::cin >> input;
    20. std::set combinations;
    21. generateCombinations(input, 0, "", combinations);
    22. // 输出不同组合个数
    23. std::cout << "不同组合个数: " << combinations.size() << std::endl;
    24. // 输出不同组合的结果
    25. std::cout << "不同组合结果:" << std::endl;
    26. for (const std::string& combination : combinations) {
    27. std::cout << combination << std::endl;
    28. }
    29. return 0;
    30. }

    2、题目描述

            问题描述:现有一批长度不同的木材woods,现在需要将木材进行拼接,正好达到总产幅度length,在不考虑切割木材,并且每种长度的木材不限量供应的情况下,返回满足要求额最少木材数量,如果无法通过组合达到规定长度,则返回 -1。

    输入描述:

            木材长度和列表需要达到的总长度length

            木材种类:1<=len(woods)<=100

            木材长度:1<=woods[i]<=100

            总长度:1<=length<=100

            输入的2行信息均以字符串形式输入,需要自己转换为列表和证书

    输出描述:

            返回满足要求的最少木材数量,如果无法通过组合达到规定长度,则返回-1

    示例1:

    输入:

            [1,2,3,5]

            9

    输出:

            3

    说明:

            9=5+3+1

    测试通过用例:

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. int minWoodCount(vector<int>& woods, int length) {
    7. vector<int> dp(length + 1, length + 1);
    8. dp[0] = 0;
    9. for (int i = 1; i <= length; ++i) {
    10. for (int wood : woods) {
    11. if (i - wood >= 0) {
    12. dp[i] = min(dp[i], dp[i - wood] + 1);
    13. }
    14. }
    15. }
    16. return dp[length] > length ? -1 : dp[length];
    17. }
    18. int main() {
    19. string woods_str;
    20. getline(cin, woods_str);
    21. string length_str;
    22. getline(cin, length_str);
    23. vector<int> woods;
    24. istringstream iss(woods_str.substr(1, woods_str.size() - 2));
    25. string token;
    26. while (getline(iss, token, ',')) {
    27. woods.push_back(stoi(token));
    28. }
    29. int length = stoi(length_str);
    30. int result = minWoodCount(woods, length);
    31. cout << result << endl;
    32. return 0;
    33. }

    3、题目描述

            给定一个未经排序的整数数组,找到最长且 连续递减的子序列,并返回该序列的长度。连续递减的子序列 可以由两个下标I和r(l输入描述

            未经排序的整数数组
    输出描述

            返回连续递减子序列的长度

    示例
    输入

            7,4,5,3,1
    输出:

            3
    最长连续递减序列是[5,3,1],长度为3

    测试通过用例:

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. int findLongestDecreasingSubsequence(vector<int>& nums) {
    6. int n = nums.size();
    7. if (n == 0) {
    8. return 0;
    9. }
    10. int maxLength = 1;
    11. int currentLength = 1;
    12. for (int i = 1; i < n; ++i) {
    13. if (nums[i] < nums[i - 1]) {
    14. currentLength++;
    15. maxLength = max(maxLength, currentLength);
    16. } else {
    17. currentLength = 1;
    18. }
    19. }
    20. return maxLength;
    21. }
    22. int main() {
    23. cout << "请输入以逗号分隔的未经排序的整数数组: ";
    24. string input;
    25. getline(cin, input);
    26. vector<int> nums;
    27. stringstream ss(input);
    28. string num;
    29. while (getline(ss, num, ',')) {
    30. nums.push_back(stoi(num));
    31. }
    32. int length = findLongestDecreasingSubsequence(nums);
    33. cout << "连续递减子序列的长度为: " << length << endl;
    34. return 0;
    35. }

  • 相关阅读:
    【通信】基于PUMA实现 DOA 估计附matlab代码
    制作甘特图
    Python机器学习实战-特征重要性分析方法(9):卡方检验(附源码和实现效果)
    外中断的应用
    基于Java+SpringBoot+vue+elementui药品商城采购系统详细设计实现
    【80天学习完《深入理解计算机系统》】第十六天 4.2 Y86-64的顺序实现
    配置vue3项目的eslint,Git提交时校验
    go work 不同包下mod + work实现.go文件的互相调用
    MySQL主从复制与读写分离
    计算机竞赛 深度学习 opencv python 实现中国交通标志识别
  • 原文地址:https://blog.csdn.net/qq_42127232/article/details/132641439