ccf201903-2二十四点我用暴力破解做的,但是两个程序一个拿到了满分,一个拿到了50分,看了很长时间也没看出问题在哪里,希望有英雄慧眼帮我看一下

题目如图

img

img

100分代码

#include    
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int r;
        int a,b,c,d;
        char s1,s2,s3;
        cin>>a>>s1>>b>>s2>>c>>s3>>d;
        if(s1=='+')
            {    
                if(s2=='+')
                    {
                        if(s3=='+') r=a+b+c+d;
                        else if(s3=='-') r=a+b+c-d;
                        else if(s3=='/') r=a+b+c/d;
                        else r=a+b+c*d;
                    }
                else if(s2=='-') 
                    {
                        if(s3=='+') r=a+b-c+d;
                        else if(s3=='-') r=a+b-c-d;
                        else if(s3=='/')r=a+b-c/d;
                        else r=a+b-c*d;
                    }
                else if(s2=='/')
                    {
                        if(s3=='+') r=a+b/c+d;
                        else if(s3=='-') r=a+b/c-d;
                        else if(s3=='/') r=a+b/c/d;
                        else r=a+b/c*d;
                    }
                else 
                    {
                        if(s3=='+') r=a+b*c+d;
                        else if(s3=='-') r=a+b*c-d;
                        else if(s3=='/')r=a+b*c/d;
                        else r=a+b*c*d;
                    }
            }
        else if(s1=='-') 
        {    
                if(s2=='+')
                    {
                        if(s3=='+') r=a-b+c+d;
                        else if(s3=='-') r=a-b+c-d;
                        else if(s3=='/')r=a-b+c/d;
                        else r=a-b+c*d;
                    }
                else if(s2=='-') 
                    {
                        if(s3=='+') r=a-b-c+d;
                        else if(s3=='-') r=a-b-c-d;
                        else if(s3=='/')r=a-b-c/d;
                        else r=a-b-c*d;
                    }
                else if(s2=='/')
                    {
                        if(s3=='+') r=a-b/c+d;
                        else if(s3=='-') r=a-b/c-d;
                        else if(s3=='/') r=a-b/c/d;
                        else r=a-b/c*d;
                    }
                else 
                    {
                        if(s3=='+') r=a-b*c+d;
                        else if(s3=='-') r=a-b*c-d;
                        else if(s3=='/')r=a-b*c/d;
                        else r=a-b*c*d;
                    }
            }
        else if(s1=='/')
        {    
                if(s2=='+')
                    {
                        if(s3=='+') r=a/b+c+d;
                        else if(s3=='-') r=a/b+c-d;
                        else if(s3=='/')r=a/b+c/d;
                        else r=a/b+c*d;
                    }
                else if(s2=='-') 
                    {
                        if(s3=='+')r=a/b-c+d;
                        else if(s3=='-') r=a/b-c-d;
                        else if(s3=='/')r=a/b-c/d;
                        else r=a/b-c*d;
                    }
                else if(s2=='/')
                    {
                        if(s3=='+') r=a/b/c+d;
                        else if(s3=='-') r=a/b/c-d;
                        else if(s3=='/')r=a/b/c/d;
                        else r=a/b/c*d;
                    }
                else 
                    {
                        if(s3=='+') r=a/b*c+d;
                        else if(s3=='-') r=a/b*c-d;
                        else if(s3=='/') r=a/b*c/d;
                        else r=a/b*c*d;
                    }
            }
        else 
        {    
                if(s2=='+')
                    {
                        if(s3=='+') r=a*b+c+d;
                        else if(s3=='-') r=a*b+c-d;
                        else if(s3=='/')r=a*b+c/d;
                        else r=a*b+c*d;
                    }
                else if(s2=='-') 
                    {
                        if(s3=='+')r=a*b-c+d;
                        else if(s3=='-') r=a*b-c-d;
                        else if(s3=='/')r=a*b-c/d;
                        else r=a*b-c*d;
                    }
                else if(s2=='/')
                    {
                        if(s3=='+') r=a*b/c+d;
                        else if(s3=='-') r=a*b/c-d;
                        else if(s3=='/')r=a*b/c/d;
                        else r=a*b/c*d;
                    }
                else 
                    {
                        if(s3=='+') r=a*b*c+d;
                        else if(s3=='-')  r=a*b*c-d;
                        else if(s3=='/') r=a*b*c/d;
                        else  r=a*b*c*d;
                    }
            }
        //    cout<if(r==24) cout<<"Yes"<else cout<<"No"<0;
} 


50分代码

#include
using namespace std;
int main()
{
    int n,i;
    cin>>n;
    int a,b,c,d,r;
    char s1,s2,s3;
    for(i=0;i>a>>s1>>b>>s2>>c>>s3>>d;
        if(s1=='+')
        {
            if(s2=='+')
            {
                if(s3=='+')  r=a+b+c+d;
                else if(s3=='-')  r=a+b+c-d;
                else if(s3=='*')  r=a+b+c*d;
                else  r=a+b+c/d;
            }
            else if(s2=='-')
            {
                if(s3=='+')  r=a+b-c+d;
                else if(s3=='-')  r=a+b-c-d;
                else if(s3=='*')  r=a+b-c*d;
                else  r=a+b-c/d;
            }
            else if(s2=='*')
            {
                if(s3=='+')  r=a+b*c+d;
                else if(s3=='-')  r=a+b*c-d;
                else if(s3=='*')  r=a+b*c*d;
                else   r=a+b*c/d;
            }
            else 
            {
                if(s3=='+')  r=a+b/c+d;
                else if(s3=='-')  r=a+b/c-d;
                else if(s3=='*')  r=a+b/c*d;
                else   r=a+b/c/d;
            }
        }
        else if(s1=='-')
        {
            if(s2=='+')
            {
                if(s3=='+')  r=a-b+c+d;
                else if(s3=='-')  r=a-b+c-d;
                else if(s3=='*')  r=a-b+c*d;
                else  r=a-b+c/d;
            }
            else if(s2=='-')
            {
                if(s3=='+')  r=a-b-c+d;
                else if(s3=='-')  r=a-b-c-d;
                else if(s3=='*')  r=a-b-c*d;
                else   r=a-b-c/d;
            }
            else if(s2=='*')
            {
                if(s3=='+')  r=a-b*c+d;
                else if(s3=='-')  r=a-b*c-d;
                else if(s3=='*')  r=a-b*c*d;
                else   r=a-b*c/d;
            }
            else
            {
                if(s3=='+')  r=a-b/c+d;
                else if(s3=='-')  r=a-b/c-d;
                else if(s3=='*')  r=a-b/c*d;
                else   r=a-b/c/d;
            }
        }
        else if(s1=='*')
        {
            if(s2=='+')
            {
                if(s3=='+')  r=a*b+c+d;
                else if(s3=='-')  r=a*b+c-d;
                else if(s3=='*')  r=a*b+c*d;
                else  r=a*b+c/d;
            }
            else if(s2=='-')
            {
                if(s3=='+')  r=a*b-c+d;
                else if(s3=='-')  r=a*b-c-d;
                else if(s3=='*')  r=a*b-c*d;
                else  r=a*b-c/d;
            }
            else if(s2=='*')
            {
                if(s3=='+')  r=a*b*c+d;
                else if(s3=='-')  r=a*b*c-d;
                else if(s3=='*')  r=a*b*c*d;
                else  r=a*b*c/d;
            }
            else 
            {
                if(s3=='+')  r=a*b/c+d;
                else if(s3=='-')  r=a*b/c-d;
                else if(s3=='*')  r=a*b/c*d;
                else   r=a*b/c/d;
            }
        }
        else 
        {
            if(s2=='+')
            {
                if(s3=='+')  r=a/b+c+d;
                else if(s3=='-')  r=a/b+c-d;
                else if(s3=='*')  r=a/b+c*d;
                else   r=a/b+c/d;
            }
            else if(s2=='-')
            {
                if(s3=='+')  r=a/b-c+d;
                else if(s3=='-')  r=a/b-c-d;
                else if(s3=='*')  r=a/b-c*d;
                else  r=a/b-c/d;
            }
            else if(s2=='*')
            {
                if(s3=='+')  r=a/b*c+d;
                else if(s3=='-')  r=a/b*c-d;
                else if(s3=='*')  r=a/b*c*d;
                else  r=a/b*c/d;
            }
            else 
            {
                if(s3=='+')  r=a/b/c+d;
                else if(s3=='-')  r=a/b/c-d;
                else if(s3=='*')  r=a/b/c*d;
                else   r=a/b/c/d;
            }
        }
        if(r==24)
        cout<<"Yes"<else
        cout<<"No"<

+-x/
题目是乘法字符好像是x, 代码用的是*, 与这个是否有关系