用给的数字去判断一共可以得到多少个等式,利用C程序编写的方式来实现怎么做的

Problem Description
Now give you an string which only contains 0, 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9.You are asked to add the sign ‘+’ or ’-’ between the characters. Just like give you a string “12345”, you can work out a string “123+4-5”. Now give you an integer N, please tell me how many ways can you find to make the result of the string equal to N .You can only choose at most one sign between two adjacent characters.

Input
Each case contains a string s and a number N . You may be sure the length of the string will not exceed 12 and the absolute value of N will not exceed 999999999999.

Output
The output contains one line for each data set : the number of ways you can find to make the equation.

Sample Input
123456789 3
21 1

Sample Output
18
1

int Count( int n,int nn,int *a)
{
int *b;
int countN=0,ss=1;
b=(int *)malloc(sizeof(int)*nn)//主要是存储数据
for (int i=0;i {
if(a[i]==1)
{
if(ss==1)
countN=countN+n/pow(10,nn-i+1);
else
countN=countN-n/pow(10,nn-i+1);
n=n/pow(10,nn-i);
ss=1:
}
if(a(i)==2)
{
if(ss==1)
countN=countN+n/pow(10,nn-i+1);
else
countN=countN-n/pow(10,nn-i+1);
n=n/pow(10,nn-i);
ss=2:
}
}
return countN;
}
int main()
{
int n,N,i;
int cn=0;
cin>>n>>N;
while()
{
i=1;
(a[nn-i])++;
while(a[nn-i]==3)
{
if(a[0]==3) break;
a[nn-i]==0;
(a[nn-1-i])++;

i++;
}
if (a[0]==3) break;
if(N==Count(n,nn,a))
cn++;
}
return 0;
}