当前位置: 首页 > article >正文

明明的随机数

题目描述
 

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

题意总结:给你n个数,让你将这些数去重并升序排序

输入描述

有2行,第1行为1个正整数,N,表示有N个数字

第2行有N个用空格隔开的正整数。
 

输出描述

第1行为1个正整数M,表示不相同的数字的个数。

第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的数字。

样例输入

10
20 40 32 67 40 20 89 300 400 15

样例输出

8
15 20 32 40 67 89 300 400

 好理解版本:

#include<stdio.h>
int a[1010];
int main()
{
    //输入
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    //排序
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - 1 - i; j++)
        {
            if (a[j] > a[j + 1])
            {
                int t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    //15 20 20 32 40  40  67  89  300  400 
    //去重
    for (int i = 0; i < n-1; i++)//i<n的时候a[i+1]会越界
    {
        if (a[i] == a[i + 1])
        {
            for (int j = i; j < n - 1; j++)//让后面的数组依次往前移动
            {
                a[j] = a[j + 1];
            }
            n--;
            i--;
        }
    }
    //输出
    printf("%d\n", n);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
}

顶级思路:

#include<stdio.h>
int a[1001];
int main()
{
    int n, t, i;
    int count = 0;//数字的个数
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &t);
        if (a[t] == 0)//如果a[t]是空的
        {
            a[t] = t;//把输入的数赋给a[t]
            //顺便给排序了!!!牛
            count++;//数字的个数++
        }
    }
    printf("%d\n", count);
    for (i = 0; i < 1001; i++)//循环的目的是检查这1001个位置中的每一个,看是否有存储的值(即非0值),如果有,则输出该值。
    {
        if (a[i] != 0)//a[i]上没空位,都占满了
            printf("%d ", a[i]);
    }
    return 0;
}

 这个思路可太牛了,学习学习


http://www.kler.cn/a/422192.html

相关文章:

  • Linux网络编程——进程、线程同步方式
  • 使用docker部署GBase8s数据库(jdk安装,docker安装,GBase部署)
  • 万字长文解读深度学习——多模态模型BLIP2
  • 003-SpringBoot整合Pagehelper
  • Flutter 之 InheritedWidget
  • Node.js 实战: 爬取百度新闻并序列化 - 完整教程
  • FPGA实战篇(触摸按键控制LED灯)
  • Mock.js的学习使用
  • 5G学习笔记之随机接入
  • 基于Java Springboot校园导航微信小程序
  • 658.找到K个最接近的元素(双指针)
  • 【深度学习】—CNN卷积神经网络 从原理到实现
  • 社区团购中 2+1 链动模式商城小程序的创新融合与发展策略研究
  • Linux 网卡收包流程如下
  • 手机ip地址取决于什么?可以随便改吗
  • 20240921解决使用PotPlayer在WIN10电脑播放4K分辨率10bit的视频出现偏色的问题
  • stable diffusion实践操作-大模型介绍:SD的发展历史,SD1.5和SDXL之间的差别
  • DVWA靶场——XSS(Stored)
  • 数据库python连接测试
  • 学习笔记050——SpringBoot学习1
  • docker使用(镜像、容器)
  • sheng的学习笔记-【中】【吴恩达课后测验】Course 5 - 序列模型 - 第三周测验 - 序列模型与注意力机制
  • 用于LiDAR测量的1.58um单芯片MOPA(一)
  • Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档
  • [Redis#9] stream | geospatial | HyperLogLog | bitmaps | bitfields
  • Create Stunning Word Clouds with Ease!