当前位置:   article > 正文

华为od机考准备记录_华为od机试准备了多久

华为od机试准备了多久

应该没啥人看,就是个菜鸡的自我记录贴。

考研失败了找工作,想起了曾经联系过我的华为od hr,联系之后对方很善良的表示能给时间让我学好了再机考面试,不知道别人学习要多久,懵逼的学了一个多月还是觉得自己啥都不懂,但还是勉强继续学吧。

约等于零基础从头学c语言再准备机考了,网上好多代码解答都是c++或java做的,我试试用c好了,暂时懒得重新学一门语言了。

PS:本人菜鸡一枚,给出的代码有时候随着学习会反应过来有些地方特别蠢,但是懒得改,看到很笨的解法勿喷(主要是数据结构和算法学得太菜了)。由于我也没有用例库,代码只保证示例通过,不确定是不是百分百通过,欢迎大佬交流指正。

4.17

1.快递运输

一辆运送快递的货车,运送的快递均放在大小不等的长方体快递盒中,为了能够装载更多的快递,同时不能让货车超载,需要计算最多能装多少个快递。

注:快递的体积不受限制,快递数最多1000个,货车载重最大50000。

输入描述:

第一行输入每个快递的重量,用英文逗号分隔,如:5,10,2,11

第二行输入货车的载重量,如:20

不需要考虑异常输入。

输出描述:

输出最多能装多少个快递,如:3

示例1:

输入

5,10,2,11

20

输出

3

说明

货车的载重量为20,最多只能放三个快递5、10、2,因此输出3

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int arr[100]={0};
  5. int i=0,j=0,sum=0;
  6. int n=0;
  7. int temp,k;
  8. while(scanf("%d,",&arr[i])!=EOF)
  9. {
  10. i++;
  11. n++;
  12. }
  13. k=arr[n-1];
  14. for(i=0;i<n-1;i++)
  15. {
  16. for(j=i+1;j<n-1;j++)
  17. {
  18. if(arr[i]>arr[j])
  19. {
  20. temp=arr[j];
  21. arr[j]=arr[i];
  22. arr[i]=temp;
  23. }
  24. }
  25. }
  26. for(i=0;i<n-1;i++)
  27. {
  28. sum+=arr[i];
  29. if(sum>k)
  30. printf("%d",i);
  31. }
  32. }

    很笨的办法,之前一直在查有逗号分隔的数据怎么录入数组,然后看到这么简单可以录入,但是不知道为什么换行仍然继续录入了货车载重量k,不想探究了,直接赋值,就这样吧。

5.8

2.勾股元组数

如果三个正整数A B C ,A²+B²=C²则为勾股数
        // 如果ABC之间两两互质,即A与B A与C B与C均互质没有公约数,
        // 则称其为勾股数元组。
//        请求出给定n m 范围内所有的勾股数元组
//        输入描述
//          起始范围 1<n<10000    n<m<10000
//        输出目描述
//           abc 保证a<b<c输出格式  a b c
//           多组勾股数元组 按照a升序b升序 c升序的排序方式输出。
//           给定范围内,找不到勾股数元组时,输出  Na

        // 案例
        //  输入
        //   1
        //   20
        //  输出
        //   3 4 5
        //   5 12 13
        //   8 15 17

        //  输入
        //    5
        //    10
        //  输出
        //    Na
 

  1. #include<stdio.h>
  2. int gcd(int a,int b)
  3. {
  4. while(a%b)
  5. {
  6. int temp=a;
  7. a=b;
  8. b=temp%b;
  9. }
  10. return b;
  11. }
  12. int main()
  13. {
  14. int n,m,i,j,k,count=0;
  15. scanf("%d %d",&n,&m);
  16. for(i=n;i<m;i++)
  17. {
  18. for(j=i+1;j<m;j++)
  19. {
  20. for(k=j+1;k<=m;k++)
  21. {
  22. if(i<j && j<k && (i*i + j*j == k*k) &&gcd(i,j)==1 && gcd(j,k)==1 && gcd(i,k)==1)
  23. {
  24. printf("%d %d %d\n",i,j,k);
  25. count++;
  26. }
  27. }
  28. }
  29. }
  30. if(count==0)
  31. printf("Na");
  32. }

3.整数对最小和 

给定两个整数数组
        //array1 array2  数组元素按升序排列
        // 假设从arr1 arr2中分别取出一个元素,可构成一对元素
        // 现在需要取出k对元素,并对取出的所有元素求和
        // 计算和的最小值
        // 注意:两对元素对应arr1 arr2的下标是相同的
        //       视为同一对元素

        //输入描述
        //    输入两行数组arr1 arr2
        //    每行首个数字为数组大小size   0<size<=100
        //    arr1,2中的每个元素   0< <1000
        //    接下来一行  正整数k   0<k<=arr1.size * arr2.size
        // 输出描述
        //   满足要求的最小值

        // 例子

        //输入
        //   3 1 1 2
        //   3 1 2 3
        //   2

        //输出
        //   4

        //说明:用例中需要取两个元素,
        // 取第一个数组第0个元素与第二个数组第0个元素组成一个元素
        // [1,1]
        //取第一个数组第1个元素与第二个数组第0个元素组成一个元素
        // [1,1]

        //求和为1+1+1+1=4 ,满足要求最小

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i,j,k,n,m,t=0,sum=0;
  5. int arr1[100]={0},arr2[100]={0},arr3[10000]={0};
  6. scanf("%d ",&n);
  7. for(i=0;i<n;i++)
  8. {
  9. scanf("%d ",&arr1[i]);
  10. }
  11. scanf("%d",&m);
  12. for(i=0;i<m;i++)
  13. {
  14. scanf("%d ",&arr2[i]);
  15. }
  16. scanf("%d",&k);
  17. for(i=0;i<n;i++)
  18. {
  19. for(j=0;j<m;j++)
  20. {
  21. arr3[t]=arr1[i]+arr2[j];
  22. t++;
  23. }
  24. }
  25. for(i=0;i<m*n;i++)
  26. {
  27. for(j=i+1;j<m*n;j++)
  28. {
  29. if(arr3[i]>arr3[j])
  30. {
  31. int temp=arr3[i];
  32. arr3[i]=arr3[j];
  33. arr3[j]=temp;
  34. }
  35. }
  36. }
  37. for(i=0;i<k;i++)
  38. {
  39. sum+=arr3[i];
  40. }
  41. printf("%d",sum);
  42. }

4.n阶方阵和

这道题做法纯属讨巧懒得写了……尽量不要学

 给出n阶方阵里所有数
        求方阵里所有数的和
        输入描述&#x

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/154729
推荐阅读
相关标签
  

闽ICP备14008679号