• 3级考题(c++)


    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. char a[100] = {'\0'};
    6. cin.getline(a,100);
    7. int lc = 0;
    8. int cnt[100] = {0};
    9. int n = strlen(a);
    10. char c[100][100] = {'\0'};
    11. for(int i = 0;i
    12. {
    13. for(int j = i;j
    14. {
    15. char b[100] = {'\0'};
    16. for(int k = i;k<=j;k++)
    17. {
    18. b[k-i] = a[k];
    19. }
    20. bool f = false;
    21. for(int k = 0;k
    22. {
    23. bool t = true;
    24. for(int h = 0;h<100;h++)
    25. {
    26. if(c[k][h]!=b[h])
    27. {
    28. t = false;
    29. break;
    30. }
    31. }
    32. if(t==true)
    33. {
    34. f = true;
    35. cnt[k]++;
    36. break;
    37. }
    38. }
    39. if(f==false)
    40. {
    41. for(int k = 0;k<100;k++)
    42. {
    43. c[lc][k] = b[k];
    44. }
    45. cnt[lc] = 1;
    46. lc++;
    47. }
    48. }
    49. }
    50. for(int i = 0;i-1;i++)//排序
    51. {
    52. for(int j = 0;j-1;j++)
    53. {
    54. bool f = true;
    55. for(int k = 0;k<100;k++)
    56. {
    57. if(c[j][k]>c[j+1][k])
    58. {
    59. f = false;
    60. break;
    61. }
    62. }
    63. if(f==false)
    64. {
    65. char t[100] = {'\0'};
    66. for(int k = 0;k<100;k++)
    67. {
    68. t[k] = c[j][k];
    69. c[j][k] =c[j+1][k];
    70. c[j+1][k] = t[k];
    71. }
    72. int tt = cnt[j];
    73. cnt[j] = cnt[j+1];
    74. cnt[j+1] = tt;
    75. }
    76. }
    77. }
    78. for(int i = 0;i
    79. {
    80. if(cnt[i]>1)
    81. {
    82. int j = 0;
    83. while(c[i][j]!='\0'&&c[i][j]!=' ')
    84. {
    85. cout<
    86. j++;
    87. }
    88. cout<<" "<
    89. }
    90. }
    91. return 0;
    92. }

    #6146. 流感传染

    题目描述

    有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。

    在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。

    请输出第m天得流感的人数。

    输入格式

    第一行一个数字n,n不超过100,表示有n*n的宿舍房间。

    接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。

    接下来的一行是一个整数m,m不超过100。

    输出格式

    输出第m天,得流感的人数。

    样例

    样例输入

    复制
    1. 5
    2. ....#
    3. .#.@.
    4. .#@..
    5. #....
    6. .....
    7. 4

    样例输出

    复制16
    1. #include
    2. using namespace std;
    3. int n;
    4. int sum = 0;
    5. char a[100][100];
    6. void aaa(int,int);
    7. int main()
    8. {
    9. cin>>n;
    10. for(int i = 0;i
    11. {
    12. for(int j = 0;j
    13. {
    14. cin>>a[i][j];
    15. if(a[i][j]=='@')
    16. {
    17. sum++;
    18. }
    19. }
    20. }
    21. int m;
    22. cin>>m;
    23. for(int k = 1;k
    24. {
    25. for(int i = 0;i
    26. {
    27. for(int j = 0;j
    28. {
    29. aaa(i,j);
    30. }
    31. }
    32. for(int i = 0;i
    33. {
    34. for(int j = 0;j
    35. {
    36. if(a[i][j]=='!')
    37. {
    38. sum++;
    39. a[i][j] = '@';
    40. }
    41. }
    42. }
    43. }
    44. cout<
    45. return 0;
    46. }
    47. void aaa(int i,int j)
    48. {
    49. if(a[i][j]=='@')
    50. {
    51. if(a[i+1][j]=='.') a[i+1][j] = '!';
    52. if(a[i-1][j]=='.') a[i-1][j] = '!';
    53. if(a[i][j+1]=='.') a[i][j+1] = '!';
    54. if(a[i][j-1]=='.') a[i][j-1] = '!';
    55. }
    56. }

    #4194. 吃糖果2

    题目描述

    现有n(50 > n > 0)个糖果,每天只能吃2个或者3个,请计算共有多少种不同的吃法吃完糖果。

    输入格式

    输入的每一行包括一组测试数据,即为糖果数n。最后一行为0,表示测试结束。

    输出格式

    每一行输出对应一行输入的结果,即为吃法的数目。

    样例

    样例输入

    复制
    1. 1
    2. 2
    3. 3
    4. 4
    5. 12
    6. 0

    样例输出

    复制
    1. 0
    2. 1
    3. 1
    4. 1
    5. 12
    1. #include
    2. using namespace std;
    3. int aaa(int);
    4. int main()
    5. {
    6. int a[1000];
    7. int n = 0;
    8. while(true)
    9. {
    10. int t;
    11. cin>>t;
    12. if(t==0) break;
    13. a[n] = t;
    14. n++;
    15. }
    16. for(int i = 0;i
    17. {
    18. cout<<aaa(a[i])<
    19. }
    20. return 0;
    21. }
    22. int aaa(int n)
    23. {
    24. if(n==1||n==2||n==3||n==4) return 1;
    25. return aaa(n-2)+aaa(n-3);
    26. }

    #1007. 波兰表达式

    题目描述

    波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的波兰表示法为+ 2 3。

    波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的波兰表示法为* + 2 3 4。

    本题求解波兰表达式的值,其中运算符包括+ - * /四个。

    输入格式

    输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。

    输出格式

    输出为一行,表达式的值。

    可直接用printf("%f\n", v)输出表达式的值v。

    样例
    样例输入
    复制* + 11.0 12.0 + 24.0 35.0
    

    样例输出

    复制1357.000000
    数据范围与提示

    提示 可使用atof(str)把字符串转换为一个double类型的浮点数。atof定义在math.h中。 此题可使用函数递归调用的方法求解。 来源 计算概论05

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. using namespace std;
    8. double aaa();
    9. int main()
    10. {
    11. cout<setprecision(6)<<aaa();
    12. return 0;
    13. }
    14. double aaa()
    15. {
    16. string s;
    17. cin>>s;
    18. if(s=="+") return aaa()+aaa();
    19. else if(s=="-") return aaa()-aaa();
    20. else if(s=="*") return aaa()*aaa();
    21. else if(s=="/") return aaa()/aaa();
    22. else return atof(s.c_str());
    23. }

    #5063. Minecraft

    题目描述

    Minecraft 是一个几乎无所不能的沙盒游戏,玩家可以利用游戏内的各种资源进行创造,搭建自己的世界。

    在 Minecraft 中,基本的建筑元素是边长为 1 个单位的立方体,Tony 想用 N 个这种小立方体搭建一个长方体,并用他珍藏已久的贴纸对其进行装饰。

    如果一张贴纸可以贴满小立方体的一个面。那么,他需要用掉多少张贴纸呢?

    输入格式

    一个整数 N,表示小明所拥有的小立方体的个数。N 不会超过 1000。

    输出格式

    一个整数,即小明最少用掉的贴纸有多少张。

    样例

    样例输入

    复制9
    

    样例输出

    复制30

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. int n;
    6. cin>>n;
    7. int mi = 99999;
    8. int h,l;
    9. for(int i = 1;i<=n/3;i++)
    10. {
    11. for(int j = i;j<=n/3;j++)
    12. {
    13. if(n%(i*j)==0)
    14. {
    15. h = n/(i*j);
    16. l = i*j*2+i*h*2+j*h*2;
    17. if(l
    18. }
    19. }
    20. }
    21. cout<
    22. return 0;
    23. }

    #4193. 因子问题

    题目描述

    任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。

    输入格式

    包括两个整数N、M。N不超过1,000,000。

    输出格式

    输出一个整数a,表示结果。如果某个案例中满足条件的正整数不存在,则在对应行输出-1

    样例

    样例输入

    复制35 10
    

    样例输出

    复制5
    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. int n,m;
    6. cin>>n>>m;
    7. for(int i = 1;i
    8. {
    9. if(n%i==0&&n%(m-i)==0)
    10. {
    11. cout<
    12. return 0;
    13. }
    14. }
    15. cout<<-1;
    16. return 0;
    17. }

    #4300. 「2023.09 三级」谁是你的潜在朋友

    题目描述

    “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。 首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。

    输入格式

    第一行两个整数N,M,2 <= N ,M<= 200。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)

    输出格式

    包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)

    样例

    样例输入

    复制
    1. 4 5
    2. 2
    3. 3
    4. 2
    5. 1

    样例输出

    复制
    1. 1
    2. BeiJu
    3. 1
    4. BeiJu

     

    1. #include
    2. using namespace std;
    3. int a[10000] = {0};
    4. int c[10000];
    5. int main()
    6. {
    7. int n,m;
    8. cin>>n>>m;
    9. for(int i = 0;i
    10. {
    11. cin>>c[i];
    12. a[c[i]]++;
    13. }
    14. cout<
    15. for(int i = 0;i
    16. {
    17. if(a[c[i]] >1) cout<-1<
    18. else cout<<"BeiJu"<
    19. }
    20. return 0;
    21. }

    #4173. 课程冲突 

    题目描述

    小 A 修了 n 门课程, 第 i 门课程是从第 ai 天一直上到第 bi 天。

    定义两门课程的冲突程度为 : 有几天是这两门课程都要上的。

    例如 a1=1,b1=3,a2=2,b2=4 时, 这两门课的冲突程度为 2。

    现在你需要求的是这 n 门课中冲突程度最大的两门课的冲突程度。

    输入格式

    第一行一个正整数 n 表示课程数量。 接下来 n 行,每行两个正整数 ai,bi。 2 ≤ n≤ 1000, 1 ≤ ai ≤ bi ≤ 1000。

    输出格式

    输出一个整数表示最大的冲突程度。

    样例

    样例输入

    复制
    1. 3
    2. 1 3
    3. 2 4
    4. 5 5

    样例输出

    复制2
    1. #include
    2. using namespace std;
    3. int a[100];
    4. int b[100];
    5. int main()
    6. {
    7. int n;
    8. cin>>n;
    9. for(int i = 0;i
    10. {
    11. cin>>a[i];
    12. cin>>b[i];
    13. }
    14. int ma = -99999;
    15. for(int i = 0;i-1;i++)
    16. {
    17. for(int j = i+1;j
    18. {
    19. int s = min(b[i],b[j])-max(a[i],a[j])+1;
    20. ma = max(ma,s);
    21. }
    22. }
    23. cout<
    24. return 0;
    25. }

    #5064. 踩方格 

    题目描述

    有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:

    a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;

    b、走过的格子立即塌陷无法再走第二次;

    c、只能向北、东、西三个方向走;

    请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。

    输入格式

    允许在方格上行走的步数n(n≤20)。

    输出格式

    计算出的方案数量。

    样例

    样例输入

    复制2
    

    样例输出

    复制7
    1. #include
    2. using namespace std;
    3. int aaa(int);
    4. int main()
    5. {
    6. int n;
    7. cin>>n;
    8. cout<<aaa(n);
    9. return 0;
    10. }
    11. int aaa(int n)
    12. {
    13. if(n==1) return 3;
    14. if(n==2) return 7;
    15. return aaa(n-1)*2+aaa(n-2);
    16. }

     

  • 相关阅读:
    Kubernetes集群Pod控制器
    SpringCloud学习(七)----- 使用Feign调用别的微服务的方法
    大数据Hadoop入门01——大数据导论
    【学习笔记】在 windows 下创建多线程 C++
    DDD技术方案落地实践
    【博客702】shell flock实现单例模式执行任务
    互联网简史-分久必合,合久必分
    结构型-代理模式
    react-Effect Hook
    函数指针+回调函数+点云鼠标点选和框选
  • 原文地址:https://blog.csdn.net/mmz1207/article/details/136464836