40求助
查看原帖
40求助
945477
NOT__DeFined楼主2024/5/5 14:30
#include<bits/stdc++.h>
using namespace std;
int w,i1,n,g;
int f[201][201][5];
string s;
map<string,bool> mpw;
map<string,bool> mpi;
map<string,bool> mpn;
map<string,bool> mpg;
int main()
{
	cin>>w>>i1>>n>>g;
	for(int i=1;i<=w;i++)
	{
		string a;
		cin>>a;
		mpw[a]=1;
	}
	for(int i=1;i<=i1;i++)
	{
		string a;
		cin>>a;
		mpi[a]=1;
	}
	for(int i=1;i<=n;i++)
	{
		string a;
		cin>>a;
		mpn[a]=1;
	}
	for(int i=1;i<=g;i++)
	{
		string a;
		cin>>a;
		mpg[a]=1;
	}
	cin>>s;
	s=" "+s;
	int lens=s.size();
	for(int i=1;i<lens-1;i++){
		
		int j=i+1;
		string b=s.substr(i,2);
		if(mpw[b])	f[i][j][1]=1;
		if(mpi[b])	f[i][j][2]=1;
		if(mpn[b])	f[i][j][3]=1;
		if(mpg[b])	f[i][j][4]=1;
	}
	for(int len=3;len<lens;len++){
		for(int i=1;i+len-1<lens;i++)
		{
			int j=i+len-1;
			for(int k=i;k<j;k++)
			{
				if(f[i][k][1]&&f[k+1][j][1])
				{
					//cout<<2<<endl;
					if(mpw["WW"])	f[i][j][1]=1;
					if(mpi["WW"])	f[i][j][2]=1;
					if(mpn["WW"])	f[i][j][3]=1;
					if(mpg["WW"])	f[i][j][4]=1;
				}
				if(f[i][k][2]&&f[k+1][j][2])
				{
					if(mpw["II"])	f[i][j][1]=1;
					if(mpi["II"])	f[i][j][2]=1;
					if(mpn["II"])	f[i][j][3]=1;
					if(mpg["II"])	f[i][j][4]=1;
				}
				if(f[i][k][3]&&f[k+1][j][3])
				{
					if(mpw["NN"])	f[i][j][1]=1;
					if(mpi["NN"])	f[i][j][2]=1;
					if(mpn["NN"])	f[i][j][3]=1;
					if(mpg["NN"])	f[i][j][4]=1;
				}
				if(f[i][k][4]&&f[k+1][j][4])
				{
					if(mpw["GG"])	f[i][j][1]=1;
					if(mpi["GG"])	f[i][j][2]=1;
					if(mpn["GG"])	f[i][j][3]=1;
					if(mpg["GG"])	f[i][j][4]=1;
				}
			}
		}
	}
	lens--;
	bool flag=0;
	if(f[1][lens][1])
	{
		cout<<"W";
		flag=1;
	}	
	if(f[1][lens][2])
	{
		cout<<"I";
		flag=1;
	}
	if(f[1][lens][3])
	{
		cout<<"N";
		flag=1;
	}
	if(f[1][lens][4])
	{
		cout<<"G";
		flag=1;
	}
	if(!flag)	cout<<"The name is wrong!"<<endl;
	
	return 0;
 }
2024/5/5 14:30
加载中...