求助,为什么这样写是错的?
查看原帖
求助,为什么这样写是错的?
475143
gaojian2007楼主2022/10/28 11:55

错的地方标出来了

#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;
}
2022/10/28 11:55
加载中...