C++STL中set的使用策略(二)

       下面来看一道PAT上的题——列车调度(L2—014)

       用set完美解决

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int i,j,k,n,x;
    set<int> s;//定义一个名为s的集合
    while(cin>>n)
    {
        for(int i = 0;i < n;i++)
        {
            cin>>x;
            if(s.empty())//判断集合s是否是空集
            {
                s.insert(x);//是的话向集合s插入一个元素x
            }
            else
            {
                set<int>::iterator it;//定义一个set型的迭代器
                it = s.lower_bound(x);//进行二分查找
                if(it == s.end())
                {
                    s.insert(x);//插入一个元素x
                }
                else
                {
                    s.erase(it);//删除指定元素it
                    s.insert(x);//插入一个元素x
                }
            }
        }
        int t = s.size();//集合s的大小
        cout<<t<<endl;
    }
    return 0;
}

       再看一道题——蒜头君的随机数

       蒜头君想在学校中请一些同学一起做一项问卷调查,为了确保实验的客观性,他先用计算机生成了 n(1≤n≤100)个 1 到 1000 之间的随机整数,对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。

       请你协助蒜头君完成“去重”与“排序”的工作。

       输入格式

       共两行,第一行为一个正整数 n。

       第二行有n个用空格隔开的正整数,为所产生的随机数。

       输出格式

       第一行输出一个正整数m,表示不相同的随机数的个数。第二行输出 m 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

       样例输入

10
20 40 32 67 40 20 89 300 400 15

       样例输出

8
15 20 32 40 67 89 300 400

       这个就更简单了,直接给出代码,没什么好解释的,会用set就非常方便

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
       set<int> q;
       int n,x;
       int sum = 0;;
       cin>>n;
       while(n--)
       {
              cin>>x;
              q.insert(x);
       }
       cout<<q.size()<<endl;
       set<int>::iterator it;
       for(it = q.begin();it != q.end();it++)
       {
              sum++;
              if(sum != q.size())
              {
                  cout<<*it<<" ";
           }
           else
           {
                  cout<<*it;
           }
       }
      
       return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魂祭心

原 canvas绘制clock

4164
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

31910
来自专栏ASP.NETCore

ASP.NET Core 整合Autofac和Castle实现自动AOP拦截

除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninjec...

674
来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4064
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4878
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCircuitBreaker 3. HystrixCircuitBreaker....

5337
来自专栏飞扬的花生

jsencrypt参数前端加密c#解密

      写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度...

3879
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2070
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6948
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4045

扫码关注云+社区