CSP201903-2二十四点

如图所示先处理乘号和除号,再处理加减。

#include<bits/stdc++.h>
using namespace std;
bool res[101];int main(){
    int n;
    cin>>n;
    int i,j,op1,op2;
    string inp;
    char op[3];
    int nn[4];

    int sum,nnum=0;
    int opnum=0;
    int nns[4];
    char ops[3];
    for(i=0;i<n;i++){
        cin>>inp;
        sum=0;
        nnum=0;
        opnum=0;
        nn[0]=inp[0]-‘0‘;
        nn[1]=inp[2]-‘0‘;
        nn[2]=inp[4]-‘0‘;
        nn[3]=inp[6]-‘0‘;
        op[0]=inp[1];
        op[1]=inp[3];
        op[2]=inp[5];
        j=0;
        while(j<4){
            nns[nnum++]=nn[j];
            if(opnum>0&&(ops[opnum-1]==‘x‘||ops[opnum-1]==‘/‘)){
                op1=nns[nnum-2];
                op2=nns[nnum-1];
                nnum-=2;
                if(ops[opnum-1]==‘x‘){
                    nns[nnum++]=op1*op2;
                }else{
                    nns[nnum++]=op1/op2;
                }
                opnum--;
            }

            if(j!=3){
                ops[opnum++]=op[j];
            }
            j++;
        }
/*        for(j=0;j<opnum;j++){
            cout<<nns[j]<<ops[j];
        }
        cout<<nns[opnum]<<endl;
*/        sum=nns[0];
        for(j=0;j<opnum;j++){
            if(ops[j]==‘+‘){
                sum+=nns[j+1];
            }else{
                sum-=nns[j+1];
            }
        }
//        cout<<sum<<endl;
        res[i]=(sum==24);
    }
    for(i=0;i<n;i++){
        if(res[i]){
            cout<<"Yes\n";
        }else{
            cout<<"No\n";
        }
    }
}

原文地址:https://www.cnblogs.com/hyffff/p/12110015.html

时间: 2024-10-08 18:50:37

CSP201903-2二十四点的相关文章

HNU 12886 Cracking the Safe 二十四点的判断

经典的一个题,今天竟然写跪了…… 题意: 给你4个数字,让你判断是否能通过四则运算和括号,凑成24点. 思路: 暴力枚举运算顺序和运算符. 代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <cmath> 6 #include <algorithm> 7 #include <stri

Scala二十四点游戏

Scala二十四点游戏(1):表达式计算(一) Scala二十四点游戏(2):表达式计算(二) Scala二十四点游戏(3):表达式计算(三) Scala二十四点游戏(4):算法之一 Scala二十四点游戏(5):List简介 Scala二十四点游戏(6):实现全排列 Scala二十四点游戏(7):穷举可能的表达式 Scala二十四点游戏(8): 计算24的算法 Scala二十四点游戏(9): 完整的代码和计算结果 Scala二十四点游戏(10): 更简单的表达式算法 Scala二十四点游戏(1

二十四点问题

判断四个数是否可能通过加减乘得到二十四, 可以使用括号,思路极其像Expression Add Operators, 区别是在处理乘号的时候,一种是没有括号的,和Expression Add Operators一样,一种是带有括号的,其实就是把乘号当作加号来计算 public class Solution { public boolean solution(List<Integer> list) { return helper(list, 0); } public boolean helper

Java从零开始学二十四点(集合工具类Collections)

一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二.Collections类的常用方法及常量 No. 方法 类型 描述 1 public static final List EMPTY_LIST 常量 返回一个空的List集合 2 public static final Set EMPTY_SET 常量 返回空的Set集合 3 public sta

二十四点游戏

#include<iostream> #include<string.h> #include<string> #include<stack> using namespace std; bool lessthan(char a, char b) { if(b=='*' || b=='/' ) { return true; } if(a=='+' || a=='-' ) { return true; } return false; } void compute(

[LeetCode] 24 Game 二十四点游戏

You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated through *, /, +, -, (, )to get the value of 24. Example 1: Input: [4, 1, 8, 7] Output: True Explanation: (8-4) * (7-1) = 24 Example 2: Input: [1, 2,

二十四点

本来想用后缀表达式,但是感觉代码太长了,算式也不复杂就懒得写,就模拟了下 过程,思路很简单,算两趟,第一次算乘除,第二次算加减 import java.util.LinkedList; import java.util.Scanner; /** * @Auther: Pengwen * @Date: 2019/12/8 21:29 * @Description: */ public class Main { public static void main(String[] args) { Sca

201903-2 二十四点

n = int(input())result = []for i in range(n): temp = str(input()) if("x" in temp): temp = temp.replace("x","*") if("/" in temp): temp = temp.replace("/","//") if(eval(temp) == 24): result.append(

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装 当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 pip install Scrapy 手动源码安装,比较麻烦要自己手动安装scrapy模块以及依赖模块 安装以下模块 1.lxml-3.8.0.tar.gz (XML处理库) 2.Twisted-17.5.0.tar.bz2 (用Python编写的异步网络框架) 3.Scrapy-1.4.0.tar.gz