zoukankan      html  css  js  c++  java
  • 3C.处女座点名(C++)

    处女座点名(C++)

    点击做题网站链接

    题目描述
    处女座觉得自己手上的经费可能不太够,于是决定给牛逼学生们带家教。
    一天他去上课用自己的火眼金睛感觉教室里有一个学生没有来,于是他就叫学生们报出自己的学号。
    已知这个班上的学号是从1开始连续编号的,处女座告诉你这个班上有多少人,想问问你到底是谁没有来。

    输入描述:
    输入数据共两行,第一行为一个整数N,表示班上的学生数量。
    第二行为一行N-1个整数,表示已经来的学生的学号,按升序给出。

    输出描述:
    输出一个整数,为没有来的学生的学号。

    示例1
    输入

    3
    1 3

    输出
    2

    备注:
    2≤N≤200,000

    解题代码1:(数组每一个位置存储一个int,最后看每个int值和数组下标是否对应)

    #include <iostream>
    using namespace std;
    int main()
    {
        int N,ID[200001];
        cin >> N;
        for(int i=1;i<N;++i) cin >> ID[i];
        if(ID[1]!=1)
        {
            cout << "1" << endl;
            return 0;
        }
        if(ID[N-1]!=N)
        {
            cout << N << endl;
            return 0;
        }
        for(int i=2;i<N;++i)
        {
            cin >> ID[i];
            if( ID[i]-ID[i-1]!=1 )
            {
                cout << ID[i]-1 << endl;
                return 0;
            }
        }
    }
    

    解题代码2:

    #include <iostream>
    using namespace std;
    int main()
    {
        int N,a[1000001],index;
        cin >> N;
        for(int i=1;i<=N;++i) a[i] = 1;//把数组全部初始化为1
        for(int i=0;i<N-1;++i)
        {
            cin >> index;//学生没报一个号就作为下标,其中元素改为0
            a[index] = 0;
        }
         
        for(int i=1;i<=N;++i)//遍历所有数组,如果为1,那么说明那个学生没有来
        {
            if( a[i]==1 )
            {
                cout << i << endl;
                break;
            }
         }
    }
    
  • 相关阅读:
    Android大牛
    在学习oauth时学到的
    using-jade-and-grunt-to-speed-up-html-production
    build-your-microservices-api-with-swagger
    json-web-token-apache-shiro
    WebSocket对象特性和方法
    芝麻教程
    how to export multiple SVG graphics in illustrator
    直播后台
    关于在chrome中响应不出现在XHR里的远影
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626117.html
Copyright © 2011-2022 走看看