WA 10 pts 求调
查看原帖
WA 10 pts 求调
1121518
StarsIntoSea楼主2024/7/24 19:55
#include <stdio.h>
#include <string.h>
#define il inline
int dp[202][202][5],b[5][5][5],a[5];
int m[202];
char p[202];
il int hush(char x){
	if(x=='W') return 1;
	if(x=='I') return 2;
	if(x=='N') return 3;
	if(x=='G') return 4;
}
//il int sol(int x,int y,int k,int op){
//	for(int i=1;i<=4;++i)
//		for(int j=1;j<=4;++j)
//			if(b[i][j][op]){
//				if(dp[x][k][i] && dp[k+1][y][j]){
//					return 1;
//				}
//			}
//	return 0;
//}
int main(){
	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];++i){
			scanf("%s",p);
			b[hush(p[0])][hush(p[1])][i]=1;
		}
	scanf("%s",p);
	int n=strlen(p);
	for(int i=0;i<n;++i) m[i+1]=hush(p[i]);
	for(int i=1;i<=n;++i) dp[i][i][m[i]]=1;
	for(int pu=1;pu<n;++pu)
		for(int i=1,j=1+pu;j<=n;++i,++j){
			for(int k=i;k<j;++k){
				for(int opt=1;opt<=4;++opt){
//					if(!dp[i][j][opt])
					for(int x=1;x<=4;++x)
						for(int y=1;y<=4;++y)
							if(b[x][y][opt] && dp[i][k][x] && dp[k+1][j][y])
								dp[i][j][opt]=1;
				}
			}
		}
	int f=0;
	if(dp[1][n][1]) printf("W"),f++;
	if(dp[1][n][2]) printf("I"),f++;
	if(dp[1][n][3]) printf("N"),f++;
	if(dp[1][n][4]) printf("G"),f++;
	if(!f) printf("The name is wrong!");
}
2024/7/24 19:55
加载中...