二十四点

本来想用后缀表达式,但是感觉代码太长了,算式也不复杂就懒得写,就模拟了下 过程,思路很简单,算两趟,第一次算乘除,第二次算加减

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) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        LinkedList<Character> op = new LinkedList<>();
        LinkedList<Integer> number = new LinkedList<>();
        String str;
        while (n-- != 0) {
            char[] chars = scanner.next().toCharArray();
            for (int i = 0; i < chars.length; i++) {
                switch (chars[i]) {
                    case ‘x‘: {
                        number.add(number.removeLast() * (chars[i + 1] - ‘0‘));
                        i++;
                        break;
                    }
                    case ‘/‘: {
                        number.add(number.removeLast() / (chars[i + 1] - ‘0‘));
                        i++;
                        break;
                    }
                    case ‘+‘: {
                        op.add(chars[i]);
                        break;
                    }
                    case ‘-‘: {
                        op.add(chars[i]);
                        break;
                    }
                    default: {
                        number.add(chars[i] - ‘0‘);
                    }
                }

            }

            for (Character aChar : op) {
                if (aChar == ‘+‘) {
                    number.addFirst(number.removeFirst() + number.removeFirst());
                } else {
                    number.addFirst(number.removeFirst() - number.removeFirst());
                }
            }

            if(number.getFirst()==24)
                System.out.println("Yes");
            else
                System.out.println("No");
            number.clear();
            op.clear();
        }
    }
}

原文地址:https://www.cnblogs.com/pw126046/p/12008604.html

时间: 2024-08-26 18:08:41

二十四点的相关文章

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,

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>>

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