zoukankan      html  css  js  c++  java
  • NBUT 1535

    题意:往一个塔里放数,取数,找第 k 个大的数

    刚开始用 stack 做的,不知道怎样找第 k 个数

    又想到用 vector ,以前用过

    注释有点多吧  ......

    代码如下:

    #include<stdio.h>
    #include<vector>              //定义 c++ 中的容器所需的头文件
    #include<algorithm>            //sort 排序所需的头文件
    using namespace std;           //c++ 要用到
    vector<int> qq1, qq2;          //定义容器 qq1,qq2,相当于数组,比数组功能大点
    int main()
    {
        int t, n, k;
        scanf("%d", &t);
        while(t--)
        {
            qq1.clear();             //由于多组数据,每次都将 qq1 清空
            scanf("%d%d", &n, &k);
            char ch[10];
            while(n--)
            {
                int a;
                scanf("%s", ch);
                if(ch[0] == 'P')
                {
                    scanf("%d", &a);
                    qq1.push_back(a);  //将 a 放到容器 qq1 最后面
                }
                else if(ch[0] == 'T')
                {
                    int len = qq1.size();    //容器 qq1 中元素个数
                    printf("%d
    ", qq1[len - 1]); //输出 qq1 中最后面的元素,注意下标:len - 1,从 qq1[0] 开始
                    qq1.pop_back();     //将 qq1 最后的元素舍弃
                }
                else
                {
                    int len = qq1.size();
                    qq2 = qq1;               //将 qq1 复制到 qq2,避免影响 qq1
                    sort(qq2.begin(), qq2.end());  //将 qq2 从小到大排序
                    if(len >= k)   //若元素个数大于 k ,输出第 k 个数
                        printf("%d
    ", qq2[k - 1]);
                    else printf("%d
    ", qq2[len - 1]);  //否则,输出最大的数
                }
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    python之元组
    python之dict
    python之list
    python之str字符串
    python之for循环
    Python的基本语法2
    Python的基本语法1
    初识python
    JS获取当天是周几
    EXCLE导入数据库
  • 原文地址:https://www.cnblogs.com/Houheshuai/p/3746463.html
Copyright © 2011-2022 走看看