科大讯飞/奇安信/大疆测试工程师8.15-16在线笔试编程题

- 科大讯飞
1、一只铁杆顶端,有一只蜗牛。第一天先滑落当前距离的一半,再滑落3米,第二天先滑落当前距离的一半,再滑落3米,第三天先滑落当前距离的一半,再滑落6米,第四天先滑落当前距离的一半,再滑落9米,第五天先滑落当前距离的一半,再滑落15米。以此内推,直至滑落到地面。给定滑落到地面的天数,求铁杆的最大高度(不会大于4G)。
输入描述:一个数字,表明滑落至地面的天数,小于36
输出描述:一个数字,表明铁杆最大的高度

#include<iostream>
#include<vector>
unsing namespace std;
int main(){
    int n;
    cin>>n;
    vector<int> day_h(n+1, 0);
    day_h[1] = 3;
    for(int i = 2; i < n+1; i++)
        day_h[i] = day_h[i - 1] + day_h[i - 2];
    double ans = day_h[n];
    for(int i = n; i > 0; i++){
        ans *= 2;
        ans += day_h[i-1];
    }
    cout<<ans;
}

2、为了节约存储容量,需要压缩字符串,请编写一段程序,可以将字符串(任意长度)按照如下规则压缩并输出。
压缩规则为:相同字符连续,则压缩为“数字个数+字符”,如“aaabb”压缩为“3a2b”
输入描述:随机字符串
输出描述:按照规则压缩之后的字符串
- 奇安信
1、老板一共需要给某个员工发奖金n元,可以选择一次发1元,也可以选择一次发2元……老板也可以选择一次发n元(必须以元为整数单位发放)。请问老板给这位员工发放完n元奖金共有多少种方法?
示例1:一共有2元奖金,有两种发放方法,第一种:分别每次发放1元,两次发放完,第二种:一次全部发放完
输入:2
输出:2
示例2:一共有3元奖金,有4种发放方法,第一种:分别每次发放一元,3次发放完,第二种先第一次发2元,第二次发1元,第三种第一次发1元,第二次发2元,第四种:一次全部发放完
输入:3
输出:4
注:输入参数为一个整数数字,输出为一个整数数字

def CalulateMethod(num_money):
    #
    # @param num_money int整型 奖金的总数,单位为元
    # @return int整型
    #
    # write code here
    if num_money == 0:
        print(0, end="")
    else:
        dp = [0 for i in range(max(num_money + 1, 3))]
        dp[0] = 0
        dp[1] = 1
        dp[2] = 2
        i = 3
        while i <= num_money:
            sum = 0
            j = i - 1
            while j >= 0:
                sum += dp[j]
                j -= 1
            dp[i] = sum + 1
            i += 1
        print(dp[num_money])


if __name__ == "__main__":
    num_money = int(input())
    CalulateMethod(num_money)

2、撤销/恢复操作具有广泛的用途,比如word文档中插入一个单词,可以点撤销,然后可以恢复。编程实现如下功能:从标准输入读取到一个字符串,字符串可包含0个或多个单词,单词以空格或者tab分隔;如果遇到“undo”字符串,表示“撤销”操作,前一个字符串被撤销掉;如果遇到“redo”字符串,表示恢复刚才撤销掉的字符串。
例如:输入字符串“hello undo redo word”,对字符串中的undo和redo处理后,最终输出的结果为“hello word”
输入描述:一行字符串:包含0个或多个单词,单词以空格或者tab分隔
输出描述:一行字符串:由0个或多个单词组成,单词以空格分隔
示例1
输入:hello undo redo world.
输出:hello world.
- 大疆
1、比较两个字符串(str1,str2),如果str1中的字母经过排列组合后,可以组合成str2,则返回True,否则返回False
注意:1、当前方法仅考虑小写字母;2、需要考虑方法的执行效率
例如:
('rkqodlw','world')——True
('katas','steak')——False

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class checkSame{
    public static boolean judge(String str1, String str2){
        if(str1 == null || str2 == null){
            return false;
        }
        Map<Character, Integer> charCount = new HashMap<>();
        for(char ch : str1.toCharArray()){
            Integer count = charCount.getOrDefault(ch,0);
            charCount.put(ch, count + 1);
        }
        for(char ch : str2.toCharArray()){
            Integer count = charCount.getOrDefault(ch, 0);
            if(count < 1){
                return false;
            }
            charCount.put(ch, count - 1);
        }
        return true;
    }
    public static void main(String[]args){
        Scanner s = new Scanner(System.in);
        while(s.hasNextLine()){
            String str1 = s.nextLine();
            String str2 = s.nextLine();
            System.out.println(judge(str1, str2)?"True":"False");
        }
        s.close();
    }
}
#笔试题目##大疆##科大讯飞##奇安信#
全部评论
请问楼主讯飞的编程题目只能用C++和Java吗
点赞 回复
分享
发布于 2020-09-11 10:50
蜗牛的代码,最后的循环++改成--,然后ans类型改成long long,就能ac
点赞 回复
分享
发布于 2020-09-12 20:54
阅文集团
校招火热招聘中
官网直投

相关推荐

投递卓望数码等公司10个岗位
点赞 评论 收藏
转发
🕒&nbsp;岗位/笔试时间:笔试时间:3.19岗位:软件助理工程师🕒&nbsp;岗位/面试时间一面约定时间:3.21【面试官没到位,通过联系临时有事儿,切换约定时间】🤔&nbsp;笔试感受:由于遗忘,就谈一谈感受笔试内容偏向底层,更注重&nbsp;C&nbsp;语言!由于&nbsp;C++&nbsp;字符串等内容的便利性,相较于&nbsp;C&nbsp;的字符串或字符数组操作,懂得都懂。这次笔试确实认识到了诸多不足。比如声明了char*&nbsp;类型变量,通过自定义函数调用的方式获取内存空间,你可以设想有什么方法,有哪些情形会出现问题?例如:char&nbsp;*类型变量初始化?初始化为&nbsp;空?函数参数使用一级指针?二级指针?字符数组?函数内使用malloc是否返回,函数返回值是否有?是什么类型?返回的内容是什么?😂【3个题,连续出现组合了上述情形】此外,还涉及&nbsp;Tubro&nbsp;C,在&nbsp;Tubro&nbsp;C&nbsp;下类型大小问题,结构体对齐/存储问题。以及&nbsp;ANIS&nbsp;编译器下&nbsp;要求实现代码。使用宏函数实现指定功能等。好像还有实现&nbsp;C++&nbsp;string&nbsp;指定的构造函数(可以和其他笔试记岔了)有要求实现&nbsp;memcpy&nbsp;函数。总体来说,基本是考&nbsp;C&nbsp;以及底层认识。&nbsp; #笔试# #春招# #面经# #佰维存储# 我能过也是没想到。😂面试官没来是不是因为错发了面试邀请😅
投递佰维科技等公司10个岗位
点赞 评论 收藏
转发
8 50 评论
分享
牛客网
牛客企业服务