• 牛客网刷题篇


     ced485cbb11e458d81a746890b32cf3f.gif

    作者:敲代码の流川枫

    博客主页:流川枫的博客

    专栏:C语言从入门到进阶

    语录:Stay hungry stay foolish

    工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器——牛客网

    点击免费注册和我一起刷题吧 

    文章目录

    1. 矩阵转置

    2. 上三角矩阵判定

    3. 有序序列判断

    4. 小乐乐与欧几里得 

    5. 空心正方形图案

    6. 箭形图案

    7. 公务员面试

    点击免费注册后点击下方标题来刷题吧

    1. 矩阵转置

     

     解题思路
    在输入矩阵a的时候,同时将对应值赋给转置矩阵b,最后输出即可

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. int main()
    4. {
    5. int n = 0;
    6. int m = 0;
    7. int i = 0;
    8. int j = 0;
    9. int arr[10][10] = { 0 };
    10. scanf("%d %d", &n,&m);
    11. for (int i = 0; i < n; i++)
    12. {
    13. for (j = 0; j < m; j++)
    14. {
    15. scanf("%d", &arr[i][j]);
    16. }
    17. }
    18. //输出
    19. for (i = 0; i < m; i++)
    20. {
    21. for (j = 0; j < n; j++)
    22. {
    23. printf("%d ", arr[j][i]);
    24. }
    25. printf("\n");
    26. }
    27. return 0;
    28. }

    2. 上三角矩阵判定

    解题思路

    对角线下方元素都为0则是上三角形矩阵,注意循环条件的控制

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. int main()
    4. {
    5. int n = 0;
    6. int i = 0;
    7. int j = 0;
    8. int arr[10][10] = { 0 };
    9. scanf("%d", &n);
    10. for (int i = 0; i < n; i++)
    11. {
    12. for (j = 0; j < n; j++)
    13. {
    14. scanf("%d", &arr[i][j]);
    15. }
    16. }
    17. int flag = 1;//是上三角形矩阵
    18. for (int i = 0; i < n; i++)
    19. {
    20. for (j = 0; j < i; j++)
    21. {
    22. if (arr[i][j] != 0)
    23. {
    24. flag = 0;
    25. goto end;
    26. }
    27. }
    28. }
    29. end:
    30. if (flag == 0)
    31. {
    32. printf("NO\n");
    33. }
    34. else
    35. printf("YES\n");
    36. }

     每道题都有很多不同的解法,也有很多人分享自己的解题思路,可以讨论,见识到许多不同的思路,这也是我很喜欢牛客的原因之一

    3. 有序序列判断

     解题思路

    当有一个数比下一个数大时,将flag1置为1;当有一个数比下一个数小时,flag2置为1;遍历结束,flag1+flag2>1则说明数组是无序的

      

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. int main()
    4. {
    5. int n = 0;
    6. scanf("%d", &n);
    7. int i = 0;
    8. int flag1 = 0;
    9. int flag2 = 0;
    10. int arr[100] = { 0 };
    11. for (i = 0; i < n; i++)
    12. {
    13. scanf("%d", &arr[i]);
    14. if (i > 0)
    15. {
    16. if (arr[i] > arr[i - 1])
    17. {
    18. flag1 = 1;
    19. }
    20. else if(arr[i]-1])
    21. {
    22. flag2 = 1;
    23. }
    24. else
    25. {
    26. ;
    27. }
    28. }
    29. }
    30. if (flag1 + flag2 <= 1)
    31. {
    32. printf("sorted\n");
    33. }
    34. else
    35. {
    36. printf("unsorted\n");
    37. }
    38. return 0;
    39. }

    牛客还支持各种语言,让你刷题没烦恼,还可以看排行里其他人的解法,总是会有很多解题的思路会让你受益

    4. 小乐乐与欧几里得 

     解题思路

    求最大公约数常用的有两种方法,一是九章算术中的更相减损术:大数减小数直到相等,相等的数即最大公约数,该算法时间复杂度约为O(N);二是欧几里得的辗转相除法:大数除以小数取余数(相当于模运算),直到余数为零时(也即模运算为零时)的除数(也即模数)就是最大公约数,该算法时间复杂度约为O(logN)

    求最小公倍数的方法:原始数据的乘积除以最大公约数

    还要注意根据输入数据的范围确定变量的类型,否则会出现溢出

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. long long f(long long a, long long b)
    4. {
    5. long long c = 0;
    6. long long d = 1;
    7. while (d)
    8. {
    9. c = a / b;
    10. d = a % b;
    11. a = b;
    12. b = d;
    13. }
    14. return a;
    15. }
    16. int main()
    17. {
    18. long long a = 0;
    19. long long b = 0;
    20. long long ret = 0;
    21. long long e = 0;
    22. scanf("%lld%lld", &a, &b);
    23. if (a > b)
    24. {
    25. ret=f(a, b);
    26. }
    27. else
    28. {
    29. ret=f(b, a);
    30. }
    31. e = (a * b) / ret;
    32. printf("%lld\n", e + ret);
    33. return 0;
    34. }

     还有个强大的功能就是这里有许多大佬面试的经验,可以让我们了解大厂面试是什么样的

    5. 空心正方形图案

    解题思路

    注意循环条件的控制

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. int main()
    4. {
    5. int n = 0;
    6. while (scanf("%d",&n) != EOF)
    7. {
    8. int i = 0;
    9. int j = 0;
    10. for (i = 0; i < n; i++)
    11. {
    12. for (j = 0; j < n; j++)
    13. {
    14. if ((i == 0) || (j == 0) || (i == n - 1) || (j == n - 1))
    15. {
    16. printf("* ");
    17. }
    18. else
    19. printf(" ");
    20. }
    21. printf("\n");
    22. }
    23. }
    24. return 0;
    25. }

     

    还有海量求职信息,为你的求职之路保驾护航 

    6. 箭形图案

     解题思路

    本题可以将该图案拆分成上下两部分,对于上半部分设置space,star变量记录空格和星号的个数,然后对应自增和自减,然后补全后面的空格公式可以写成2*n+1-space-star
    下半部分同理,重置space和star变量,然后对于自增和自减,补全空格输出即可

    1. #include
    2. using namespace std;
    3. int main() {
    4. int n = 0;
    5. //循环读入n
    6. while(scanf("%d", &n) != EOF) {
    7. //设置space,star值的初始值
    8. int space = 2*n;
    9. int star = 1;
    10. //外循环开始遍历每一行
    11. for(int i = 0; i < n+1; ++i) {
    12. //挨个输出空格的个数
    13. for(int j = 0; j < space; ++j)
    14. printf(" ");
    15. //挨个输出星号的个数
    16. for(int j = 0; j < star; ++j)
    17. printf("*");
    18. //输出剩下的空格
    19. for(int j = 0; j < 2*n+1-space-star; ++j)
    20. printf(" ");
    21. //更新下一行的空格数和星号个数
    22. space -= 2;
    23. star += 1;
    24. printf("\n");
    25. }
    26. //下半部分的初值设置
    27. space = 2;
    28. star = n;
    29. //外循环开始遍历每一行,内循环流程和上述一样
    30. for(int i = 0; i < n; ++i) {
    31. for(int j = 0; j < space; ++j)
    32. printf(" ");
    33. for(int j = 0; j < star; ++j)
    34. printf("*");
    35. for(int j = 0; j < 2*n+1-space-star; ++j)
    36. printf(" ");
    37. //更新下一行的空格和星号个数
    38. space += 2;
    39. star -= 1;
    40. printf("\n");
    41. }
    42. }
    43. return 0;
    44. }

    7. 公务员面试

     

    解题思路

    输入一个数时,就判定他的大小,并赋值给max,min,且用sum求和,输入数量等于7时,sum减去max,min,求出平均数即可

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. int main()
    4. {
    5. int n = 0;
    6. int score = 0;
    7. int max = 0;
    8. int min = 100;
    9. int sum = 0;
    10. while (scanf("%d", &score)==1)
    11. {
    12. n++;
    13. if (score > max)
    14. max = score;
    15. if (score < min)
    16. min = score;
    17. sum += score;
    18. if (n == 7)
    19. {
    20. printf("%.2lf\n",(sum - max - min) / 5.0);
    21. max = 0;
    22. min = 100;
    23. sum = 0;
    24. n = 0;
    25. }
    26. }
    27. return 0;
    28. }

    “ 本期的分享就到这里了, 记得给博主一个三连哈,你的支持是我创作的最大动力!想要距离大厂更进一步吗?” 

    点击免费注册和我一起刷题吧 

    ced485cbb11e458d81a746890b32cf3f.gif

     

     

  • 相关阅读:
    不让selenium自动关闭浏览器页面(闪崩)[vscode +edge]
    ubuntu初始化安装
    【计算机网络】快速入门
    Python 使用OpenCV计算机视觉(一篇文章从零毕业)【附带停车场车位智能识别项目】预计7月初更新完毕
    人工智能对我们的生活影响
    Linux系统网卡配置详细教程!
    【日常折腾】重新安装Windows7,做好ghost备份,迁移主目录,日常软件office,chrome,搜狗输入法,电脑管家,一键ghost进行备份。
    【jquery Ajax 】form表单教学+评论案例
    【Netty 的优化和参数】
    图解java.util.concurrent并发包源码系列——各种各样的阻塞队列BlockingQueue一套带走(ノ`Д)ノ!!!
  • 原文地址:https://blog.csdn.net/chenchenchencl/article/details/125880626