zoukankan      html  css  js  c++  java
  • 洛谷P1059 明明的随机数

    注:本题解写给和本蒟蒻一样的萌新看,不喜者请略过。另欢迎各位大佬提出意见!

    这题其实很H₂O,因为数据较小(N≤100),用for循环就可以A掉。但是,在这里我们用一个简单且快速的方法:

    STL库!(STL大法好)

    首先我们来认识一下这两个函数:

    排序函数 sort

    sort是C++STL库里的排序函数,属于十分常用的函数之一,可以节省一些手写的时间 (懒人福音),缺点就是运行起来没有手写的快(STL都这一个特性)。

    sort函数的格式是这样的:

    sort(数组名称,数组名称+数组元素个数);

    举个例子:

    int a[15];
    sort(a,a+15);

    然后你就会发现,它已经帮你排好序了!

    去重函数 unique

    unique也是C++STL库里的常用函数之一,用来给一个已经

    排!好!序!的!

    数组去重。unique的原理其实是把重复的元素用后面的元素代替掉。

    unique函数的用法是这样的:

    unique(数组名称,数组名称+数组元素个数)

    当然它还有一个十分神奇的用法:

    int n = unique(数组名称,数组名称+数组元素个数);

    这样,你就会惊喜的发现,不但数组已经去重,还得到了去重后的数组元素数量!

    需要注意的是:

    如果你输入数据时for循环喜欢写i=1,那么sort和unique应该相应的变为(数组名称+1,数组名称+数组元素个数+1)

    当然,不要忘记了头文件:

    <algorithm>

    好了,直接献上

    AC代码!

    #include<cstdio>
    #include<algorithm>  //头文件记得加上哦
    using namespace std;
    int n,a[107],t;
    int main()
    {
        scanf("%d",&n);  //用scanf和printf读写速度会比cout和cin快,所以建议使用scanf和printf
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        sort(a,a+n);
        t=(unique(a,a+n)-a);
        printf("%d
    ",t);
        for(int i=0;i<t;i++)
            printf("%d ",a[i]);
        return 0;
    }

    另附i=1的写法:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n,a[107],t;
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        t=(unique(a+1,a+n+1)-a-1);
        printf("%d
    ",t);
        for(int i=1;i<=t;i++)
            printf("%d ",a[i]);
        return 0;
    }

    好了,这篇题解就这样结束了

  • 相关阅读:
    c++实现执行脚本命令
    常用命令
    ssh2.cpp
    通过scp传输文件到多个主机
    启动和监控脚本
    centos 7.2 svn 安装
    SVN提交时必须填写备注信息 配置
    centos 7.2 配置mysql
    centos 7.2 配置Nginx
    js调试的时候用console.log("变量"+scrollTop+windowHeight)
  • 原文地址:https://www.cnblogs.com/w-rb/p/13444659.html
Copyright © 2011-2022 走看看