int IfIn(char n)//字符合不合规
{
int i = (int) n;
if(i>='0'+0&&i<='0'+9)
return 1;
else
return 0;
}
int IfIn1(char* n)//1位字符可能的组合
{
int i = (int) (*n);
if(i>'0'+0&&i<='0'+9)
return 1;
else
return 0;
}
int IfIn2(char* n)//2位字符可能的组合
{
int i;
if( !( IfIn(n[0])&&IfIn(n[1])) )
return 0;
i=((int)n[0]-'0')*10+((int)n[1]-'0');
if(n[0]=='0')
return 0;
if(i>26)
return 0;
else
return 1;
}
int solve(char* nums ) {
int len =strlen(nums);
int i,l1,l2;
int count;
if(len==0||nums[0]=='0')
return 0;
if (len==1&&IfIn1(nums))
return 1;
if(len==2)
return (IfIn2(nums)+IfIn1(nums+1)*IfIn1(nums));
l1=IfIn1(nums);
l2=(IfIn2(nums)+IfIn1(nums+1)*IfIn1(nums));
for(i=2;i<len;i++)
{
count = l1*(IfIn2(nums+i-1))+l2*(IfIn1(nums+i));
l1 = l2;
l2 = count;
}
return count;
}