oWuJingTianZe12 2019-09-05 15:51 采纳率: 0%
浏览 684

CCF 2019.3 二十四点 自己写了一个代码手打各种样例都没问题可是只有30分

图片说明

#include<iostream>
#include<stdio.h>

using namespace std;

int main(){
    int n;
    cin>>n;
    int **a=new int*[n];
    for(int i=0;i<n;i++){
        a[i]=new int[4];
    }

    char **b=new char*[n];
    for(int i=0;i<n;i++){
        b[i]=new char[4];
    }

    for(int i=0;i<n;i++){
//      cin>>a[i][0];
//      b[i][0]=getchar();
//      cin>>a[i][1];
//      b[i][1]=getchar();
//      cin>>a[i][2];
//      b[i][2]=getchar();
//      cin>>a[i][3];   

        scanf("%d%c%d%c%d%c%d",&a[i][0],&b[i][0],&a[i][1],&b[i][1],&a[i][2],&b[i][2],&a[i][3]);
    }

    for(int i=0;i<n;i++){
        int num1=4;//数字剩余的个数
        int num2=3;//字符个数 

        while(num1!=1){

            for(int j=0;j<num2;j++){
                if(b[i][j]=='x')a[i][j]=a[i][j]*a[i][j+1];
                else if(b[i][j]=='/')a[i][j]=a[i][j]/a[i][j+1];
                else if(j==num2-1&&b[i][j]=='+')a[i][j]=a[i][j]+a[i][j+1];
                else if(j==num2-1&&b[i][j]=='-')a[i][j]=a[i][j]-a[i][j+1];
                else continue;

                //符号和数字相对应,运算一次后,数字和符号都减少,保持靠左对齐,下面的操作是向左移位,保持紧凑
                for(int k=j+1;k<num1-1;k++){
                        a[i][k]=a[i][k+1];
                    }
                    num1--;
                for(int k=j;k<num2-1;k++){
                        b[i][k]=b[i][k+1];
                    }
                    num2--;
                break;
            }


        } 

        if(a[i][0]==24&&i!=n-1){
            cout<<"Yes"<<endl;
        }
        else if(a[i][0]==24&&i==n-1){
            cout<<"Yes";
        }
        else if(a[i][0]!=24&&i!=n-1){
            cout<<"No"<<endl;
        }
        else cout<<"No";
    }

    return 0;
}

我本人的思路不是网上常用的堆栈的方法,利用的是两个普通数组进行的,一个存数字,一个存符号
先把除法和乘法扫描出来运算,转化成加法减法,每一次运算后保持进行移位靠左对齐保证数字和运算符对应,
希望有能力的大佬帮忙解答一下

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-09-06 08:34
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 如何提取csv文件中需要的列,将其整合为一篇完整文档,并进行jieba分词(语言-python)
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置