C++ 15分求助
查看原帖
C++ 15分求助
519986
Luxe877楼主2022/9/9 22:27

把数据下载后本地测试没问题,但是交上去5~21都是RE。

代码如下:

#include<bits/stdc++.h>
using namespace std;
string type;
int n,tail;
char num[102];
int ip[12];
struct save{
	int ips[12];
	int step;
};
save comp[10002];
bool ins(char p[])
{
	int l=strlen(p);
	long long s=0,c=0,c1=0;
	for(int i=0;i<=l;i++)
	{
		
		if(p[i]>='0'&&p[i]<='9')
		{
			s=s*10+p[i]-'0';
			c1++;
		}else{
			c++;
			c1=0;
			if(c<4&&(p[i]!='.')||c1>=6)
			{
				return false;
			}else{
				
				if((c<=4&&(s<0||s>255))||(c==5&&(s<0||s>65535)))
				{
					return false;
				}
				ip[c]=s;
			}
			s=0;
		}
	}
	return true;
}
void add()
{
	
	for(int i=1;i<tail;i++)
	{
		int cnt=0;
		for(int j=1;j<=5;j++)
		{
			cnt+=(comp[i].ips[j]==ip[j]);
		}
		if(cnt==5)
		{
			cout<<"FAIL"<<endl; 
			return;
		}
	}
	for(int i=1;i<=n;i++)
	{
		comp[tail].ips[i]=ip[i];
	}
	cout<<"OK"<<endl;
	return;
}
void find()
{
	for(int i=1;i<tail;i++)
	{
		int cnt=0;
		for(int j=1;j<=5;j++)
		{
			cnt+=(comp[i].ips[j]==ip[j]);
		}
		if(cnt==5)
		{
			cout<<comp[i].step<<endl;
			return;
		}
	}
	cout<<"FAIL"<<endl; 
	return;
}
int main()
{
	cin>>n;
	tail=1;
	for(int i=1;i<=n;i++)
	{
		cin>>type;
		cin>>num;
		if(!ins(num))
		{
			cout<<"ERR"<<endl;
			continue;
		}
		if(type[0]=='S')
		{
			add();
			comp[tail].step=i;
			tail++;
		}else{
			find();
		}
	}
	return 0;
}

2022/9/9 22:27
加载中...