P2580两个点TLE
  • 板块灌水区
  • 楼主AlphaStar
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/17 10:50
  • 上次更新2023/11/3 09:23:36
查看原帖
P2580两个点TLE
1037925
AlphaStar楼主2023/7/17 10:50

源代码:

#include <iostream>
#include <string.h>
#undef find
using namespace std;
int m,n,i,j,p;
int find(string *arr,int l,string _str)
{
	int k;
	for(k=0;k<=l-1;k++)
	{
		if(_str==arr[k]) return k;
	}
	return -1;
}
int main()
{
	cin>>m;
	string name[m];
	bool use[m]={0};
	for(i=0;i<=m-1;i++)
	{
		cin>>name[i];
	}
	cin>>n;
	string per[n];
	for(i=0;i<=n-1;i++)
	{
		cin>>per[i];
	}
	for(i=0;i<=n-1;i++)
	{
		p=find(name,m,per[i]);
		if(p!=-1)
		{
			if(use[p]==0)
			{
				cout<<"OK"<<'\n';
				use[p]=1;
			}
			else cout<<"REPEAT"<<'\n';
		}
		else cout<<"WRONG"<<'\n';
	}
}

筛选函数:

int findstr(string *arr,string str,int n)
{
	int i,k,x=0,p;
	string st,*sr;
	for(i=0;i<=str.size()-1;i++)
	{
		for(k=0;k<=n-1;k++)
		{
			if((arr[k])[i]==str[i])
			{
				st=sr[x]=arr[k];
				x++;
				p=k;
			}
		}
		arr=NULL;
		n=0;
		for(k=0;k<=x-1;k++)
		{
			if((sr[k])[i]==str[i])
			{
				st=arr[n]=sr[k];
				n++;
				p=k;
			}
		}
		if(n==1)
		{
			if(st==arr[0]) return p;
		}
		sr=NULL;
		x=0;
	}
	return -1;
}
2023/7/17 10:50
加载中...