代码不输出,输入6 9 9 10 用来计算二十四点并输出计算格式

把函数中的每一项提出来都有正常答案,但是放在一起就不输出了,为什么。。如果可以,希望帮忙改进以下,谢谢
代码如下:
#include
using namespace std;
void shy(int);
void fun1(int,int,int);
void fun2(int,int,int,int);
void fun3(int,int,int,int);
int a1[5],j1[5]={1,1,1,1,1};
int a2[4],j2[4]={1,1,1,1};
int a3[3],j3[3]={1,1,1};
int ast[5],back[5],remark[3]={0,0,0}; //remark数组用来标记括号的位置 ,ast数组用来存储各位置的数字
int t;
int count=0,out[5];
char b[4],chr[6]="%+-*/",pu[4];
int main(){
int i,j;
for(i=1;i<=4;i++){
cin>>a1[i];
}
shy(4);
if(count==0) cout<<"No Answer";
return 0;
}

void shy(int x){
int p,k,i,j;
if(x==1&&t==24){
if(remark[0]==1){
printf("(((%d%c%d)%c%d)%c%d)\n",ast[1],b[1],ast[2],b[2],ast[3],b[3],ast[4]);
count++;
}
if(remark[1]==2&&remark[2]==0){
printf("((%d%c(%d%c%d))%c%d)\n",ast[1],b[1],ast[2],b[2],ast[3],b[3],ast[4]);
count++;
}
if(remark[1]==2&&remark[2]==1){
printf("(%d%c(%d%c(%d%c%d)))\n",ast[1],b[1],ast[2],b[2],ast[3],b[3],ast[4]);
count++;
}
if(remark[1]==1&&remark[2]==1){
printf("((%d%c%d)%c(%d%c%d))\n",ast[1],b[1],ast[2],b[2],ast[3],b[3],ast[4]);
count++;
}
if(remark[1]==2&&remark[2]==-1){
printf("(%d%c((%d%c%d)%c%d))\n",ast[1],b[1],ast[2],b[2],ast[3],b[3],ast[4]);
}
return;
}
if(x==4){
for(i=1;i<=4;i++){
for(j=1;j<=4;j++){
if(i!=j){
j1[j]=0;
j1[i]=0;
for(p=1;p<=4;p++){
fun1(p,i,j);
shy(x-1);
}
}
j1[j]=1;
}
j1[i]=1;
}
}
if(x==3){
for(i=1;i<=3;i++){
for(j=1;j<=3;j++){
if(i!=j){
j2[j]=0,j2[i]=0;
if(a2[i]!=a2[1]&&a2[j]!=a2[1]){
remark[1]=1,remark[2]=1;
ast[3]=a2[i];
ast[4]=a2[j];
back[1]=ast[1],back[2]=ast[2],back[3]=ast[3],back[4]=ast[4];
pu[1]=b[1],pu[2]=b[2],pu[3]=b[3];
for(p=1;p<=4;p++){
fun2(p,3,i,j),
shy(x-1);
}
remark[0]=0,remark[1]=0,remark[2]=0;
}
if(a2[i]==a2[1]){
remark[0]=1,remark[1]=1;
ast[3]=a2[j];
for(p=1;p<=3;p++){
if(j2[p]==1) ast[4]=a2[p];
}
back[1]=ast[1],back[2]=ast[2],back[3]=ast[3],back[4]=ast[4];
pu[1]=b[1],pu[2]=b[2],pu[3]=b[3];
for(p=1;p<=4;p++){
fun2(p,2,i,j);
shy(x-1);
}
remark[0]=0,remark[1]=0,remark[2]=0;
}
if(a2[j]==a2[1]){
remark[1]=2;
ast[3]=ast[2],ast[2]=ast[1],ast[1]=a2[i];
for(p=1;p<=3;p++){
if(j2[p]==1) ast[4]=a2[p];
}
back[1]=ast[1],back[2]=ast[2],back[3]=ast[3],back[4]=ast[4];
pu[1]=b[1],pu[2]=b[2],pu[3]=b[3];
for(p=1;p<=4;p++){
fun2(p,1,i,j);
shy(x-1);
}
remark[1]=0;
}
j2[i]=1,j2[j]=1;
}
}
}
}
if(x==2){
ast[1]=back[1],ast[2]=back[2],ast[3]=back[3],ast[4]=back[4];
b[1]=pu[1],b[2]=pu[2],b[3]=pu[3];
for(i=1;i<=2;i++){
for(j=1;j<=2;j++){
if(i!=j){
if(remark[0]==1){
if(a3[i]==a3[1]){
for(p=1;p<=4;p++){
fun3(p,3,i,j);
shy(x-1);
}
}
if(a3[j]==a3[1]){
out[1]=ast[1],out[2]=ast[2],out[3]=ast[3],out[4]=ast[4];
ast[1]=out[4],ast[2]=out[1],ast[3]=out[2],ast[4]=out[3];
b[3]=b[2],b[2]=b[1];
remark[0]=0,remark[2]=-1,remark[1]=2;
for(p=1;p<=4;p++){
fun3(p,1,i,j);
shy(x-1);
}
}
}
if(remark[2]==1){
if(a3[i]==a3[2]){
b[2]=b[3];
b[3]=b[1];
b[1]=b[2];
out[1]=ast[1],out[2]=ast[2];
ast[1]=ast[3],ast[2]=ast[4];
ast[3]=out[1],ast[4]=out[2];
}
for(p=1;p<=4;p++){
fun3(p,2,i,j);
shy(x-1);
}
}
if(remark[1]==2&&remark[2]==0){
if(a3[i]==a3[1]){
for(p=1;p<=4;p++){
fun3(p,3,i,j);
shy(x-1);
}
}
if(a3[j]==a3[1]){
ast[1]=out[1],ast[2]=out[2],ast[3]=out[3],ast[4]=out[4];
ast[1]=out[4],ast[2]=out[1],ast[3]=out[2],ast[4]=out[3];
b[3]=b[2],b[2]=b[1];
remark[2]=1;
for(p=1;p<=4;p++){
fun3(p,1,i,j);
shy(x-1);
}
}
}
}
}
}
}
}

void fun1(int x,int i,int j){
int k,m=2;
if(x==1) a2[1]=a1[i]+a1[j],b[1]=chr[x];
if(x==2) a2[1]=a1[i]-a1[j],b[1]=chr[x];
if(x==3) a2[1]=a1[i]*a1[j],b[1]=chr[x];
if(x==4&&a1[i]%a1[j]==0) a2[1]=a1[i]/a1[j],b[1]=chr[x];
for(k=1;k<=4;k++){
if(j1[k]==1){
out[m-1]=k;
j1[k]=0;
a2[m]=a1[k];
m++;
}
}
j1[out[1]]=1,j1[out[2]]=1;
}
void fun2(int x,int y,int i,int j){
int m;
if(y==3){
if(x==1) a3[2]=a2[i]+a2[j],b[y]=chr[x];
if(x==2) a3[2]=a2[i]-a2[j],b[y]=chr[x];
if(x==3) a3[2]=a2[i]*a2[j],b[y]=chr[x];
if(x==4&&a2[i]%a2[j]==0) a3[2]=a2[i]/a2[j],b[y]=chr[x];
a3[1]=a2[1];
}
if(y==2||y==1){
if(x==1) a3[1]=a2[i]+a2[j],b[y]=chr[x];
if(x==2) a3[1]=a2[i]-a2[j],b[y]=chr[x];
if(x==3) a3[1]=a2[i]*a2[j],b[y]=chr[x];
if(x==4&&a2[i]%a2[j]==0) a3[1]=a2[i]/a2[j],b[y]=chr[x];
for(m=1;m<=3;m++){
if(j2[m]==1) a3[2]=a2[m];
}
}
}
void fun3(int x,int y,int i,int j){
if(x==1) t=a3[1]+a3[2],b[y]=chr[x];
if(x==2) t=a3[1]-a3[2],b[y]=chr[x];
if(x==3) t=a3[1]*a3[2],b[y]=chr[x];
if(x==4&&a3[1]%a3[2]==0) t=a3[1]/a3[2],b[y]=chr[x];
}

代码太乱,连个缩进都没有,建议参考:https://blog.csdn.net/smartboysboys/article/details/20765427