Spoj上的ACODE代码无效

时间:2015-12-24 21:50:07

标签: c

我已经尝试了所遇到的this SPOJ question所有可能的测试用例,但我的代码仍未被接受。无法确定哪个测试用例失败了。 我已经考虑过零在输入中的情况。我也考虑了连续零的情况。

#include <stdio.h>
#include <string.h>
int main()
{
    int n,i,ar[6010];
    char str[6010];
    unsigned long long int dp[6010];

    while(1)
    {   
        int flag=0;
        scanf("%s",str);
        if(str[0]=='0')
        break;
        for(i=0;str[i]!='\0';i++)       //copy string to array
        {
            ar[i+1]=str[i]-'0';
        }
        n=i;
        for(i=1;i<=n-1;i++)                 //checking for continous two zeroes 
        {
            if(ar[i]==0&&ar[i+1]==0) flag=1;
            if(ar[i]>2&&ar[i+1]==0)flag=1;
        }

        dp[1]=1;
        if(ar[1]*10+ar[2]<=26&&ar[2]!=0)dp[2]=2; 
        else dp[2]=1;
        if(ar[2]==0)dp[1]=0;
        for(i=3;i<=n;i++)
        {
            if(ar[i]!=0)
            {
                dp[i]=dp[i-1];
                if(ar[i-1]*10+ar[i]<=26)
                {
                    dp[i]+=dp[i-2];
                }
            }
            else
            {
                if(ar[i-2]*10+ar[i-1]<=26)
                {
                    dp[i]=dp[i-2];
                    dp[i-1]=0;
                }
                else
                {
                    dp[i]=dp[i-1];
                    dp[i-1]=0;
                }
            }
        }
        if(flag==0)
        printf("%llu\n",dp[n]);
        else
        printf("0\n");
    }
    return 0;
}

0 个答案:

没有答案