Kickstart 2017(apac)模式重叠

时间:2017-03-19 18:58:46

标签: string algorithm dynamic-programming

我的某些测试用例输出不正确,我的代码失败了。对于大多数输入,它运行正常。 这是我的代码 问题链接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;
}

1 个答案:

答案 0 :(得分:0)

最有可能当你的&#39;&#39;已完成,只有&#39; *&#39;留在&#39; a&#39;因为if(i==a.size()||j==b.size())return 0;

Ps-我想对此发表评论,但我的声誉还不够。