• 华为研发工程师编程题


    hua

    空汽水瓶

    某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
    小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
    数据范围:输入的正整数满足

    注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。

    这道题其实是一道简单的动态规划题目:
    n个空汽水瓶能换到的汽水等于n-2个汽水瓶能换到的汽水加1
    所以有如下代码:

    #include
    #include
    using namespace std;
    
    int main() {
        vector<int>nums;
        int num;
        while(cin >> num){
            if(num == 0)break;
            nums.push_back(num);
        }
        for(int number : nums){
            if(number == 1){
                cout << 1 << endl;
                break;
            }
            vector<int>dp(number+1,0);
            for(int i = 2; i <= number; i++){
                dp[i] = dp[i-2]+1;
            }
            cout << dp[number] << endl;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    明明的随机数

    明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
    哈希表可以做:

    #include 
    #include 
    #include 
    #include 
    using namespace std;
    
    int main(){
        int N;
        cin >> N;
        vector<int>vec;
        unordered_set<int>set;
        while(N--){
            int num;
            cin >> num;
            if(set.count(num)){
                continue;
            }else{
                set.insert(num);
                vec.push_back(num);
            }
        }
        sort(vec.begin(),vec.end());
        for(int res : vec){
            cout << res << endl;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    数组也可以做

    #include
    using namespace std;
    
    int main(){
        int nums[1001] = {0};
        int N;
        cin >> N;
        while(N--){
            int i;
            cin >> i;
            nums[i] = i; 
        }
        for(int i = 0; i <= 1001; i++){
            if(nums[i] != 0)cout << nums[i]<<endl;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    进制转换

    写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

    数据范围:保证结果在
    最佳答案:

    #include 
    #include 
    #include 
    #include 
    using namespace std;
     
    int main() {
        string s;
        cin >> s;
        int n = s.size();
        int res = 0;
        for(int i = n-1; i >= 2; i--){
            int index = 0;
            if(s[i] <= '9' && s[i] >= '0'){
                index = s[i] - '0';
            }else if(s[i] >= 'A' && s[i] <= 'F'){
                index = s[i] - 'A' + 10;
            }
            res += index * pow(16,n - 1 - i);
        }
        cout << res;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    初始想法:

    /*方法一:作为字符串一个字符一个字符的读*/
    #include
    #include 
    using namespace std;
    int main()
    {
        char *sp=new char[10];
        while(cin>>sp)
        {
            int n;
    		int num;int result=0;
            n=strlen(sp);
    		for(int i=2;i<n;i++)
    		{
    			switch (sp[i])
    			{
    				case 'A':
                		num=10;break;
    				case 'B':
                		num=11;break;
    				case 'C':
                		num=12;break;
    				case 'D':
                		num=13;break;
    				case 'E':
                		num=14;break;
    				case 'F':
                		num=15;break;
    				default:
                		if(sp[i]>='0'&&sp[i]<='9')
    						num=sp[i]-'0';
                		else
    						return 0;
    			}
    			result=result*16+num;
    		}
            cout<<result<<endl;
            memset(sp,0,sizeof(sp));
    		result=0;
        }
        return 0; 
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    从零实现深度学习框架——Seq2Seq从理论到实战【理论】
    【软考笔记】(四)数据库
    虹科案例 | LIN/CAN总线汽车零部件测试方案
    TCP 通信并发服务器详解(附有案例代码)
    T1077 统计满足条件的4位数(信息学一本通C++)
    第五章 数据库设计和事务 ② 代码
    InnoDB逻辑存储结构
    使用Keras Tuner进行自动超参数调优的实用教程
    DEJA_VU3D - Cesium功能集 之 088-军事标绘系列十七:防御阵型
    【kafka】十四、kafka生产者API
  • 原文地址:https://blog.csdn.net/m0_46663240/article/details/126149576