24点游戏问题,这个代码哪里错了,输入A 2 3 4的话会输出0,但正确结果是1.

#include<stdio.h>
char a[5];
int flag=0;
double ans,n[5];
void judge(int n,double *a)
{
if(flag==1)
return;
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i!=j)
{
double x=a[i],y=a[j];
int cnt=1;
for(int k=1;k<=n;k++)
if(k!=i&&k!=j)
a[cnt++]=a[k];
ans=x+y;
a[cnt]=ans;
judge(n-1,a);
ans=x-y;
a[cnt]=ans;
judge(n-1,a);
ans=x*y;
a[cnt]=ans;
judge(n-1,a);
if(y!=0.0)
{
ans=x/y;
a[cnt]=ans;
judge(n-1,a);
}
}
}
}
if(a[1]>=24-0.0000001&&a[1]<=24+0.0000001)
{
printf("1\n");
flag=1;
return;
}
}
int main()
{
for(int i=1;i<=4;i++)
{
scanf("%s",a);
if(a[1]=='0')
n[i]=10;
if(a[0]=='A')
n[i]=1;
if(a[0]=='J')
n[i]=11;
if(a[0]=='Q')
n[i]=12;
if(a[0]=='K')
n[i]=13;
else
n[i]=a[0]-'0';
}
judge(4,n);
if(flag==0)
printf("0\n");
return 0;
}