爸爸的雷达11

chl2023 2023-11-18 10:58:28

#include<bits/stdc++.h> 
using namespace std; 
int f[501];
int n;
string s,ss[1001];
int dfs(int x) { 
	if(x==s.size()){
		return f[x]=1;
	}
	if(f[x]!=-1)
	{
		return f[x];
	}
	for(int i=1;i<=n;i++){
		if(ss[i]==s.substr(x,ss[i].size())){
			if(dfs(x+ss[i].size())==1)return f[x]=1;
		}
	}
	return f[x]=0;
} 
int main() { 
	cin>>s;
	cin>>n;
	memset(f,-1,sizeof(f));
	for(int i=1;i<=n;i++){
		cin>>ss[i];
	}
	if(dfs(0)==1) cout<<"Yes";
	else cout<<"No";
	return 0; 
}