本文主要是介绍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;//把数组全部初始化为1for(int i=0;i<N-1;++i){cin >> index;//学生没报一个号就作为下标,其中元素改为0a[index] = 0;}for(int i=1;i<=N;++i)//遍历所有数组,如果为1,那么说明那个学生没有来{if( a[i]==1 ){cout << i << endl;break;}}
}
这篇关于3C.处女座点名(C++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!