当前位置: 移动技术网 > 科技>人工智能>机器学习 > [洛谷题解]P1059 明明的随机数「v1.0」

[洛谷题解]P1059 明明的随机数「v1.0」

2020年07月15日  | 移动技术网科技  | 我要评论

㊀题目

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了NN个11到10001000之间的随机整数(N100)(N100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入格式

输入有两行,第11行为11个正整数,表示所生成的随机数的个数NN22行有NN个用空格隔开的正整数,为所产生的随机数。

输出格式

输出也是两行,第11行为11个正整数MM,表示不相同的随机数的个数。

第22行为MM个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

输入输出样例

输入 #1
10
20 40 32 67 40 20 89 300 400 15
输出 #1
8
15 20 32 40 67 89 300 400

㊁讲解

1 排序

首先,现将这些数字排序。这里直接使用c++库函数sort即可。

2 去重

这是本题的难点,但作者用了一个简单的方法,即 如果后面那个数与它前面那个数相等,则不打印

㊂代码展示

#include <cstdio>
#include <algorithm>

int print( int n, int m[] )
{
    int i=0;
    int n1 = n;
    while( i<n )
    {
        if ( m[i] == m[i+1] )
            n1--;
        i++;
    }

    printf( "%d\n", n1 );
    i = 0;
    while( i<n )
    {
        if ( m[i] == m[i+1] ) i++;
        else printf("%d ",m[i]), i++;
    }

}

int game()
{
    int n;
    scanf( "%d", &n );

    int nums[n];
    int i = 0;
    while( i < n )
    {
        scanf( "%d", &nums[i] );
        i++;
    }
    sort( nums, nums + n );
    i = 0;

    print ( n, nums );
}

int main ()
{
    game();
    return 0;
}

㊃其他

1 更新

作者会持续更新,敬请期待

2 代码证明

AC

3 声明

请合理使用本文章中的代码,仅供学习使用,一切所造成后果本人概不负责。
代码欢迎在不篡改的情况下自由传播,一经更改,传播及需要作者的许可。

最后,感谢读者们的支持

本文地址:https://blog.csdn.net/m0_48809769/article/details/107325488

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网