答案来源于蓝桥杯老师
题目内容:某公司一年出票据,票据是连号的,不允许有断开,不允许有重复,数据规模就不说了,那个随便,现在要求如下:
输入一个n代表n行数据
n行中每行不重复,不固定有几个数据,每个数据之间用空格来隔开,最终输出 形式为 两个整数 m,n
m为断开 的数,n为重复的数字。
编码如下
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#define Max 10000
using namespace std;
int line;
int data[Max];
void change(string &str,int &num)
{
stringstream ss;
ss<<str;
ss>>num;
}
int main()
{
cin>>line;
getchar();//用来接收换行符,使新的数据变道下一行
int index=0;//数组的下标
for(int i=0;i<line;++i)
{
string s;
getline(cin ,s);//getline(cin,s),s需要是string,需要引入string头文件,std::string空间引入
istringstream iss(s);
string tmp;
while(getline(iss,tmp,' '))//getline(<字符数组chs>,<读取字符的个数n>,<终止符>)
{
change(tmp,data[index++]);
}
}
sort(data,data+index);
int a,b;
for( i=1;i<index;++i)
{
if(data[i]==data[i-1]+2)
a=data[i]-1;
if(data[i]==data[i-1])
b=data[i];
}
cout<<a<<" "<<b<<endl;
return 0;
}