瑶一瑶摇一摇 2022-09-11 16:42 采纳率: 50%
浏览 32

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

题目如图

img

img

100分代码

#include <iostream>   
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<<r<<endl;
            if(r==24) cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
    }
    return 0;
} 


50分代码

#include<iostream>
using namespace std;
int main()
{
    int n,i;
    cin>>n;
    int a,b,c,d,r;
    char s1,s2,s3;
    for(i=0;i<n;i++)
    {
        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;
            }
        }
        if(r==24)
        cout<<"Yes"<<endl; 
        else
        cout<<"No"<<endl; 
    }
      return 0;
} 

  • 写回答

1条回答 默认 最新

  • Yofoo 2022-09-11 17:08
    关注

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

    评论

报告相同问题?

问题事件

  • 创建了问题 9月11日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表