帮忙看看哪里有错
查看原帖
帮忙看看哪里有错
991896
KoishiJiji楼主2023/10/17 22:28

这是我的一个无中生友的智将写法, 我知道可以while(cin>>x) 但是这个哪里错了

#include<bits/stdc++.h>
using namespace std;
const int n=1e6+10;
int a[n],Mn,Mx; 
int main(){
	int N; cin>>N; cin.ignore();
	string str;
	for(int k=0;k<N;++k){ 
		getline(cin,str); str+=" ";
		int L=str.length();
		int i=0,j=0;
		while((str[j]<'0' || str[j]>'9'))
			j++;
		i=j;
		//cout<<str<<"\n";
		//i用来标记一个数开始的起点位置,j用来标记一个数结束的位置 
		for(  ;i<L && j<L; ){
			if((str[j]<'0' || str[j]>'9')){
				int temp=atoi(str.substr(i,j-i+1).c_str());
				///cout<<temp<<"-----------------\n"; 
				a[temp]++;

				Mx=max(Mx,temp);
				Mn=min(Mn,temp);
				//找到下一个数字的开始位置
				while(j<L && (str[j]<'0' || str[j]>'9'))
				    j++;
				
				i=j;
			}
			else{
			    j++;
			}
		}
	}
//	for(int i=0;i<20;++i) cout<<a[i]<<"---"<<i<<endl; 
	int ans1=0,ans2=0;
	for(int i=Mn;i<=Mx;++i){
		if(a[i]==0) ans1=i;
		if(a[i]==2) ans2=i;
		if(ans1&&ans2) break;
	}
	//cout<<Mn<<" "<<Mx<<"\n";
	cout<<ans1<<" "<<ans2<<endl;
}

2023/10/17 22:28
加载中...