c++代码 24点游戏

洛谷T289058 24点游戏(弱化版) A了 但代码极其丑陋
望dalo们优化 十分感谢


#include
using namespace std;

int x,y,z,w,ans;
char a[5] = {'0','+','-','*','/'};
bool flag = false;

int ja(int x,int y){return x + y;}

int jn(int x,int y){return x - y;}

int cg(int x,int y){return x * y;}

int cu(int x,int y){return x / y;}

void f(int f,char a,int g,char b,int h,char c,int j){
    if(a == '+' && b == '+' && c == '+' && f+g+h+j == 24){flag = true;return;}
    if(a == '+' && b == '+' && c == '-' && f+g+h-j == 24){flag = true;return;}
    if(a == '+' && b == '+' && c == '*' && f+g+h*j == 24){flag = true;return;}
    if(a == '+' && b == '+' && c == '/' && f+g+h/j == 24){flag = true;return;}
    
    if(a == '+' && b == '-' && c == '+' && f+g-h+j == 24){flag = true;return;}
    if(a == '+' && b == '-' && c == '-' && f+g-h-j == 24){flag = true;return;}
    if(a == '+' && b == '-' && c == '*' && f+g-h*j == 24){flag = true;return;}
    if(a == '+' && b == '-' && c == '/' && f+g-h/j == 24){flag = true;return;}
    
    if(a == '+' && b == '*' && c == '+' && f+g*h+j == 24){flag = true;return;}
    if(a == '+' && b == '*' && c == '-' && f+g*h-j == 24){flag = true;return;}
    if(a == '+' && b == '*' && c == '*' && f+g*h*j == 24){flag = true;return;}
    if(a == '+' && b == '*' && c == '/' && f+g*h/j == 24){flag = true;return;}
    
    if(a == '+' && b == '/' && c == '+' && f+g/h+j == 24){flag = true;return;}
    if(a == '+' && b == '/' && c == '-' && f+g/h-j == 24){flag = true;return;}
    if(a == '+' && b == '/' && c == '*' && f+g/h*j == 24){flag = true;return;}
    if(a == '+' && b == '/' && c == '/' && f+g/h/j == 24){flag = true;return;}
    
    if(a == '-' && b == '+' && c == '+' && f-g+h+j == 24){flag = true;return;}
    if(a == '-' && b == '+' && c == '-' && f-g+h-j == 24){flag = true;return;}
    if(a == '-' && b == '+' && c == '*' && f-g+h*j == 24){flag = true;return;}
    if(a == '-' && b == '+' && c == '/' && f-g+h/j == 24){flag = true;return;}
    
    if(a == '-' && b == '-' && c == '+' && f-g-h+j == 24){flag = true;return;}
    if(a == '-' && b == '-' && c == '-' && f-g-h-j == 24){flag = true;return;}
    if(a == '-' && b == '-' && c == '*' && f-g-h*j == 24){flag = true;return;}
    if(a == '-' && b == '-' && c == '/' && f-g-h/j == 24){flag = true;return;}
    
    if(a == '-' && b == '*' && c == '+' && f-g*h+j == 24){flag = true;return;}
    if(a == '-' && b == '*' && c == '-' && f-g*h-j == 24){flag = true;return;}
    if(a == '-' && b == '*' && c == '*' && f-g*h*j == 24){flag = true;return;}
    if(a == '-' && b == '*' && c == '/' && f-g*h/j == 24){flag = true;return;}
    
    if(a == '-' && b == '/' && c == '+' && f-g/h+j == 24){flag = true;return;}
    if(a == '-' && b == '/' && c == '-' && f-g/h-j == 24){flag = true;return;}
    if(a == '-' && b == '/' && c == '*' && f-g/h*j == 24){flag = true;return;}
    if(a == '-' && b == '/' && c == '/' && f-g/h/j == 24){flag = true;return;}
    
    if(a == '*' && b == '+' && c == '+' && f*g+h+j == 24){flag = true;return;}
    if(a == '*' && b == '+' && c == '-' && f*g+h-j == 24){flag = true;return;}
    if(a == '*' && b == '+' && c == '*' && f*g+h*j == 24){flag = true;return;}
    if(a == '*' && b == '+' && c == '/' && f*g+h/j == 24){flag = true;return;}
    
    if(a == '*' && b == '-' && c == '+' && f*g-h+j == 24){flag = true;return;}
    if(a == '*' && b == '-' && c == '-' && f*g-h-j == 24){flag = true;return;}
    if(a == '*' && b == '-' && c == '*' && f*g-h*j == 24){flag = true;return;}
    if(a == '*' && b == '-' && c == '/' && f*g-h/j == 24){flag = true;return;}

    if(a == '*' && b == '*' && c == '+' && f*g*h+j == 24){flag = true;return;}
    if(a == '*' && b == '*' && c == '-' && f*g*h-j == 24){flag = true;return;}
    if(a == '*' && b == '*' && c == '*' && f*g*h*j == 24){flag = true;return;}
    if(a == '*' && b == '*' && c == '/' && f*g*h/j == 24){flag = true;return;}
    
    if(a == '*' && b == '/' && c == '+' && f*g/h+j == 24){flag = true;return;}
    if(a == '*' && b == '/' && c == '-' && f*g/h-j == 24){flag = true;return;}
    if(a == '*' && b == '/' && c == '*' && f*g/h*j == 24){flag = true;return;}
    if(a == '*' && b == '/' && c == '/' && f*g/h/j == 24){flag = true;return;}
    
    if(a == '/' && b == '+' && c == '+' && f/g+h+j == 24){flag = true;return;}
    if(a == '/' && b == '+' && c == '-' && f/g+h-j == 24){flag = true;return;}
    if(a == '/' && b == '+' && c == '*' && f/g+h*j == 24){flag = true;return;}
    if(a == '/' && b == '+' && c == '/' && f/g+h/j == 24){flag = true;return;}
    
    if(a == '/' && b == '-' && c == '+' && f/g-h+j == 24){flag = true;return;}
    if(a == '/' && b == '-' && c == '-' && f/g-h-j == 24){flag = true;return;}
    if(a == '/' && b == '-' && c == '*' && f/g-h*j == 24){flag = true;return;}
    if(a == '/' && b == '-' && c == '/' && f/g-h/j == 24){flag = true;return;}
    
    if(a == '/' && b == '*' && c == '+' && f/g*h+j == 24){flag = true;return;}
    if(a == '/' && b == '*' && c == '-' && f/g*h-j == 24){flag = true;return;}
    if(a == '/' && b == '*' && c == '*' && f/g*h*j == 24){flag = true;return;}
    if(a == '/' && b == '*' && c == '/' && f/g*h/j == 24){flag = true;return;}
    
    if(a == '/' && b == '/' && c == '+' && f/g/h+j == 24){flag = true;return;}
    if(a == '/' && b == '/' && c == '-' && f/g/h-j == 24){flag = true;return;}
    if(a == '/' && b == '/' && c == '*' && f/g/h*j == 24){flag = true;return;}
    if(a == '/' && b == '/' && c == '/' && f/g/h/j == 24){flag = true;return;}
    
    return;
}

int main(){
    //freopen("game15.in","r",stdin);
    //freopen("game15.out","w",stdout);
    scanf("%d %d %d %d",&x,&y,&z,&w);
    for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(x,a[i],y,a[j],z,a[k],w);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(x,a[i],y,a[j],w,a[k],z);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(x,a[i],z,a[j],y,a[k],w);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(x,a[i],z,a[j],w,a[k],y);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(x,a[i],w,a[j],z,a[k],y);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(x,a[i],w,a[j],y,a[k],z);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(y,a[i],x,a[j],z,a[k],w);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(y,a[i],x,a[j],w,a[k],z);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(y,a[i],z,a[j],x,a[k],w);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(y,a[i],z,a[j],w,a[k],x);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(y,a[i],w,a[j],z,a[k],x);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(y,a[i],w,a[j],x,a[k],z);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(z,a[i],y,a[j],x,a[k],w);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(z,a[i],y,a[j],w,a[k],x);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(z,a[i],x,a[j],y,a[k],w);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(z,a[i],x,a[j],w,a[k],y);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(z,a[i],w,a[j],x,a[k],y);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(z,a[i],w,a[j],y,a[k],x);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(w,a[i],y,a[j],z,a[k],x);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(w,a[i],y,a[j],x,a[k],z);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(w,a[i],z,a[j],y,a[k],x);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(w,a[i],z,a[j],x,a[k],y);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(w,a[i],x,a[j],z,a[k],y);
            }
        }
    }for(int i=1;i<=4;i++){
        for(int j=1;j<=4;j++){
            for(int k=1;k<=4;k++){
                f(w,a[i],x,a[j],y,a[k],z);
            }
        }
    }
    if(!flag)printf("No");
    else printf("Yes");
    return 0;
}