我的某些测试用例输出不正确,我的代码失败了。对于大多数输入,它运行正常。 这是我的代码 问题链接https://codejam.withgoogle.com/codejam/contest/8284486/dashboard#s=p1
int dp[maxn][maxn];
string a,b;
int dprec(int i,int j)
{
if(i==a.size()&&j==b.size())return 1;
if(i==a.size()||j==b.size())return 0;
if(dp[i][j]!=-1)return dp[i][j];
int& k=dp[i][j];k=0;
if(a[i]=='*'||b[j]=='*')
{
if(a[i]=='*')
{
for(int u=0;u<5;u++)
{
k|=dprec(i+1,j+u);
}
}
if(b[j]=='*')
{
//k|=dprec(i+1,j);
for(int u=0;u<5;u++)
{
k|=dprec(i+u,j+1);
}
}
}
else
{
if(a[i]==b[j])k|=dprec(i+1,j+1);
else k=0;
}
return k;
}
int main()
{
freopen("inputt.in","r",stdin);
freopen("result.out","w",stdout);
int t;cin>>t;
for(int test=1;test<=t;test++){
cin>>a>>b;
memset(dp,-1,sizeof(dp));
cout<<"Case #"<<test<<": ";
if(dprec(0,0))cout<<"TRUE"<<endl;
else cout<<"FALSE"<<endl;
}
return 0;
}
答案 0 :(得分:0)
最有可能当你的&#39;&#39;已完成,只有&#39; *&#39;留在&#39; a&#39;因为if(i==a.size()||j==b.size())return 0;
Ps-我想对此发表评论,但我的声誉还不够。