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;
            }
         }
    }
    
  • 相关阅读:
    hdu 1715
    hdu 1370
    hdu 2370
    hdu 1393
    hdu 1564
    hdu 1720
    hdu 1342
    SQL技巧(sp_procedure_params_rowset,SQL中设置数据值为null)
    Control ‘dg’ of type 'GridView' must be placed inside a form tag with runat=server
    GridView事件中获取rowIndex值
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626117.html
Copyright © 2011-2022 走看看