各位大佬,来帮帮蒟蒻吧!(悬关)
查看原帖
各位大佬,来帮帮蒟蒻吧!(悬关)
1286132
Baichuzhi楼主2025/1/21 22:47
#include <bits/stdc++.h>
const int N = 205;
char c[N];
bool vis[5][5][5];
int ans[618];
int a[N];
char s[N];
int dp[N][N][N];
signed main()
{
	int d1 = 'W';
	int d2 = 'I';
	int d3 = 'N';
	int d4 = 'G';
	ans[d1] = 1;
	ans[d2] = 2;
	ans[d3] = 3;
	ans[d4] = 4;
    for (int i = 1; i <= 4; i++)
    {
    	scanf("%d" , &a[i]);
	}
    for (int i = 1; i <= 4; i++)
	{
        for (int j = 1; j <= a[i]; j++)
		{
			char x , y;
			std::cin >> x >> y;
            vis[ans[x]][ans[y]][i] = 1;
        }
    }
    scanf("%s" , &s);
    int lens = strlen(s);
	for (int i = 1; i <= lens; i++)
	{
		dp[i][i][ans[s[i - 1]]] = 1;
	}
	for (int j = 2; j <= lens; j++)
	{
		for (int i = 1; i <= lens - j + 1; j++)
		{
			int l = i + j - 1;
			for (int k = i; k <= l - 1; k++)
			{
				for (int x = 1; x <= 4; x++)
				{
					for (int y = 1; y <= 4; y++)
					{
						for (int z = 1; z <= 4; z++)
						{
							if (dp[i][k][y] != 0 && dp[k + 1][l][z] != 0 && vis[y][z][x] != 0)
							{
								dp[i][l][x] = 1;
							}
						}
					}
				}
			}
		}
	}
	bool flag = 0;
	if (dp[1][lens][1] != 0)
	{
		flag = 1;
		printf("%c" , "W");
	}
	if (dp[1][lens][2] != 0)
	{
		flag = 1;
		printf("%c" , "I");
	}
	if (dp[1][lens][3] != 0)
	{
		flag = 1;
		printf("%c" , "N");
	}
	if (dp[1][lens][4] != 0)
	{
		flag = 1;
		printf("%c" , "G");
	}
	if (flag == 1)
	{
		return 0;
	}
	puts("The name is wrong!");
    return 0;
}
2025/1/21 22:47
加载中...