错的地方标出来了
#include<iostream>
#include<cstring>
using namespace std;
int c[10],n,a[20][20][20],jj[305];
int dp[205][205][10];
char s[1005];
int main()
{
jj['W']=1;
jj['I']=2;
jj['N']=3;
jj['G']=4;
for(int i=1;i<=4;i++)
cin>>c[i];
for(int i=1;i<=4;i++)
{
for(int j=1;j<=c[i];j++)
{
char x,y;
cin>>x>>y;
a[jj[x]][jj[y]][i]=1;
a[jj[y]][jj[x]][i]=1;//删掉就A了
}
}
cin>>s;
n=strlen(s);
for(int i=1;i<=n;i++)
{
dp[i][i][jj[s[i-1]]]=1;
}
for(int i=1;i<n;i++)
{
for(int j=1;j<=n-i;j++)
{
for(int k=j;k<=j+i-1;k++)
{
for(int cc=1;cc<=4;cc++)
{
for(int aa=1;aa<=4;aa++)
{
if(dp[j][k][aa]==0)
continue;
for(int bb=1;bb<=4;bb++)
{
if(dp[k+1][j+i][bb]==0)
continue;
if(a[aa][bb][cc]==0)
continue;
//cout<<j<<" "<<k<<" "<<i+j<<" "<<aa<<" "<<bb<<endl;
dp[j][i+j][cc]=1;
}
}
}
}
}
}
int q=0;
for(int i=1;i<=4;i++)
{
if(dp[1][n][i])
{
q=1;
if(i==1)
cout<<"W";
if(i==2)
cout<<"I";
if(i==3)
cout<<"N";
if(i==4)
cout<<"G";
}
}
if(q==0)
cout<<"The name is wrong!";
return 0;
}