• 重庆大学c++、2022级-第5次实验-运用STL的容器和算法编写程序


    7-2 部分排序

    分数 10

    全屏浏览题目

    切换布局

    作者 周强

    单位 青岛大学

    对于一组数据,我们可以只对原先处在中间位置的那些元素进行排序。

    输入格式:

    在一行内输入n r a1 a2 ... an

    其中,不大于200的正整数n表示该组数据的个数;不大于200的非负整数r表示该组数据两端各自留有r个数不参与排序,若r+r>=n,则该组数据无需排序。

    整数a1 a2 ... an是该组的n个数据,且都在8位以内。

    输出格式:

    排序之后的序列,元素之间用一个空格间隔,最后一个元素之后不加空格。

    输入样例:

    5 1 6 5 4 3 2
    

    输出样例:

    6 3 4 5 2
    

    代码长度限制

    16 KB

    时间限制

    400 ms

    内存限制

    64 MB

    1. #include<iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int n, r;
    6. cin >> n >> r;
    7. int a[300];
    8. for (int i = 0; i < n; i++)
    9. {
    10. cin >> a[i];
    11. }
    12. int temp;
    13. if (r + r < n)
    14. {
    15. for (int k = 1, i = r; i < n - r; i++, k++)//设置一个k值使得下面遍历次数改变
    16. {
    17. for (int j = r; j < n - r - k; j++)
    18. {
    19. if (a[j] > a[j + 1])
    20. {
    21. temp = a[j];
    22. a[j] = a[j + 1];
    23. a[j + 1] = temp;
    24. }
    25. }
    26. }
    27. }
    28. for (int i = 0; i < n; i++)
    29. {
    30. if (i == 0)
    31. {
    32. cout << a[i];
    33. }
    34. else
    35. cout << " " << a[i];
    36. }
    37. return 0;
    38. }

     7-3 办事大厅排队

    分数 10

    全屏浏览题目

    切换布局

    作者 吴云鹏

    单位 郑州大学

    在郑州大学综合办事大厅,每天陆陆续续有很多人来排队办事。现在你能否写程序帮助老师时刻了解当前办理业务的情况。

    请同学们学习C++ STL中 list相关内容后,编程实践。

    输入格式:

    第一行一个数字N,表示排队信息或者查询信息条目的数量。

    以下N行,每行的内容有以下3种情况

    (1) in name 表示名字为name的人员新来到办事大厅,排在队伍的最后。(in和name间存在一个空格,name是名字对应字符串,长度不超过10)。

    (2) out 表示当前排在最前面的人已经办理完业务,离开了。

    (3) q 表示一次查询,请输出当前正在办理业务的人,也就是队伍的第1个人。如果当前无人办理业务,则输出“NULL”,不包括引号。

    输出格式:

    请根据以上信息,每次遇到查询时,对应一行输出。如果这时队伍有人,则输出第一个人的姓名,否则输出NULL。

    输入样例:

    1. 5
    2. in A
    3. out
    4. q
    5. in B
    6. q

    输出样例:

    在这里给出相应的输出。例如:

    1. NULL
    2. B

    代码长度限制

    16 KB

    时间限制

    1000 ms

    内存限制

    64 MB

    1. #include<cmath>
    2. #include<cstdio>
    3. #include<algorithm>
    4. #include<string>
    5. #include<vector>
    6. #include<iomanip>
    7. #include<iostream>
    8. #include<cstring>
    9. #include <list>
    10. using namespace std;
    11. int main()
    12. {
    13. int n;
    14. string s,name;
    15. cin>>n;
    16. list<string> l;
    17. while(n--)
    18. {
    19. cin>>s;
    20. if(s=="in")
    21. {
    22. cin>>name;
    23. l.push_back(name);
    24. }
    25. else if(s=="out")
    26. {
    27. l.pop_front();
    28. }
    29. else if(s=="q")
    30. {
    31. if(l.empty())
    32. {
    33. cout<<"NULL"<<endl;
    34. }else
    35. {
    36. cout<<l.front()<<endl;
    37. }
    38. }
    39. }
    40. return 0;
    41. }

    7-3 找出不是两个数组共有的元素

    分数 10

    全屏浏览题目

    切换布局

    作者 张彤彧

    单位 浙江大学

    给定两个整型数组,本题要求找出不是两者共有的元素。

    输入格式:

    输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。

    输出格式:

    在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。

    输入样例:

    1. 10 3 -5 2 8 0 3 5 -15 9 100
    2. 11 6 4 8 2 6 -5 9 0 100 8 1

    输出样例:

    3 5 -15 6 4 1
    

    代码长度限制

    16 KB

    时间限制

    400 ms

    内存限制

    64 MB

    1. #include<iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int a[20] = { 0 }, b[20] = { 0 }, c[41] = { 0 }, i, ii, iii, n, m, count = 0, num = 0;
    6. cin >> n;
    7. //num代表数组c的输出项数,i是for循环需要用到的,count判断数据是否重复
    8. for (i = 0; i < n; i++)
    9. {
    10. cin >> a[i];
    11. }
    12. cin >> m;
    13. for (i = 0; i < m; i++)
    14. {
    15. cin >> b[i];
    16. }
    17. for (i = 0; i < n; i++) {
    18. for (ii = 0; ii < m; ii++) {
    19. if (a[i] != b[ii])
    20. {
    21. count++;
    22. }//如果count和输入数据个数相同,那么就表示这个数据符合不相等的条件
    23. else break;
    24. }
    25. if (count == m)
    26. {
    27. c[num] = a[i];
    28. num++;
    29. }
    30. count = 0;
    31. } //将第一个数组内符合条件数据写入数组c[]
    32. for (i = 0; i < m; i++)
    33. {
    34. for (ii = 0; ii < n; ii++)
    35. {
    36. if (b[i] != a[ii])
    37. {
    38. count++;
    39. }
    40. }
    41. if (count == n)
    42. {
    43. c[num] = b[i];
    44. num++;
    45. }
    46. count = 0;
    47. } //将第二个数组内符合条件数据写入数组c[]
    48. for (i = 0; i < num; i++) {
    49. for (ii = i + 1; ii < num; ii++) {
    50. if (c[i] == c[ii]) {
    51. //数据重复后,把靠后的那个重复数据之后的数据全部向前移动一项,从而达到消除相同数据的目的
    52. for (iii = 0; iii < num - ii; iii++) {
    53. c[ii + iii] = c[ii + iii + 1];
    54. }
    55. ii--;
    56. num--;
    57. }
    58. }
    59. }
    60. for (i = 0; i < num; i++)
    61. {
    62. if (i == 0)
    63. {
    64. cout << c[i];
    65. }
    66. if (i != 0)
    67. {
    68. cout << " " << c[i];
    69. }
    70. }
    71. return 0;
    72. }

  • 相关阅读:
    2022引领箱式仓储新风向|可提升130%存储密度的HEGERLS A42D双深位箱式仓储机器人
    如何在外网访问公司项目?快解析实现内网ip让公网连接
    使用python查找指定文件夹下所有xml文件中带有指定字符的xml文件
    【java】IO流
    下载mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
    【python】linux下安装chromedriver
    C++ unique_ptr
    IIS6.0 PUT上传漏洞
    WWDC 2024 回顾:Apple Intelligence 的发布与解析
    Java基础数组-选择排序算法
  • 原文地址:https://blog.csdn.net/mo_zhongzhou/article/details/128090781