标签:names 标记 name 遍历 == lin main 最大和 cin
问题描述
某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。
因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。
你的任务是通过编程,找出断号的ID和重号的ID。
假设断号不可能发生在最大和最小号。
要求程序首先输入一个整数N(N<100)表示后面数据行数。
接着读入N行数据。
每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。
每个整数代表一个ID号。
要求程序输出1行,含两个整数m n,用空格分隔。
其中,m表示断号ID,n表示重号ID
1 #include <iostream> 2 #include <stdio.h> 3 #include <string> 4 #include <string.h> 5 #define MAX_N 100005 6 7 using namespace std; 8 9 string s; 10 int minn,maxx; 11 int flag[MAX_N]; 12 int n; 13 int duan,chong; 14 15 int main() 16 { 17 minn = MAX_N,maxx = 1; 18 fill(flag,flag+MAX_N,0); 19 20 int temp; 21 cin>>n; 22 getline(cin,s); 23 24 for(int i = 1; i <= n; i++) 25 { 26 getline(cin,s); 27 28 int len = s.length(); 29 temp = 0; 30 for(int j = 0; j < len; j++) 31 { 32 if(s[j]!=‘ ‘) 33 temp = temp*10 + s[j]-‘0‘; 34 else 35 { 36 if(temp<minn) 37 minn = temp; 38 if(temp>maxx) 39 maxx = temp; 40 flag[temp]++; 41 temp = 0; 42 } 43 } 44 if(s[len-1]!=‘ ‘) 45 flag[temp]++; 46 } 47 48 for(int i = minn; i <= maxx; i++) 49 { 50 if(flag[i]==2) 51 chong = i; 52 else 53 if(flag[i]==0) 54 duan = i; 55 } 56 cout<<duan<<‘ ‘<<chong<<endl; 57 58 59 return 0; 60 }
标签:names 标记 name 遍历 == lin main 最大和 cin
原文地址:https://www.cnblogs.com/Xycdada/p/9033656.html