计算24点

2023-11-13

题目描述

计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*), 除(/)四种运算法则计算得到整数24,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写joker表示小王,大写JOKER表示大王: 

                   3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER

本程序要求实现:输入4张牌,输出一个算式,算式的结果为24点。 

详细说明: 

1.运算只考虑加减乘除运算,没有阶乘等特殊运算符号,友情提醒,整数除法要当心; 

2.牌面2~10对应的权值为2~10, J、Q、K、A权值分别为为11、12、13、1; 

3.输入4张牌为字符串形式,以一个空格隔开,首尾无空格;如果输入的4张牌中包含大小王,则输出字符串“ERROR”,表示无法运算; 

4.输出的算式格式为4张牌通过+-*/四个运算符相连,中间无空格,4张牌出现顺序任意,只要结果正确; 

5.输出算式的运算顺序从左至右,不包含括号,如1+2+3*4的结果为24

6.如果存在多种算式都能计算得出24,只需输出一种即可,如果无法得出24,则输出“NONE”表示无解。

 

输入描述:

输入4张牌为字符串形式,以一个空格隔开,首尾无空格;

输出描述:

如果输入的4张牌中包含大小王,则输出字符串“ERROR”,表示无法运算; 

 

示例1

输入

A A A A

输出

NONE

 

 

Java实现

import java.util.*;
 
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        Map<String,Integer> cn=new HashMap<>();
        cn.put("A",1);
        cn.put("2",2);
        cn.put("3",3);
        cn.put("4",4);
        cn.put("5",5);
        cn.put("6",6);
        cn.put("7",7);
        cn.put("8",8);
        cn.put("9",9);
        cn.put("10",10);
        cn.put("J",11);
        cn.put("Q",12);
        cn.put("K",13);
        first:
        while(sc.hasNextLine()){
            String str = sc.nextLine();
            boolean[] bs=new boolean[4];
            String[] cs=str.split(" ");
            String[] ops=new String[]{"+","-","*","/"};
 
            for(String s:cs){
                if(s.length()>2){
                    System.out.println("ERROR");
                    continue first;
                }
            }
            int Q,W,E,R;
            double res=0.0,r0=0.0,r1=0.0,r2=0.0;
            for(int q=0;q<4;q++){
                for(int w=0;w<4;w++){
                    if(w==q) continue;
                    for(int e=0;e<4;e++){
                        if(e==q||w==e) continue;
                        int r=6-q-w-e;
                        Q=cn.get(cs[q]);
                        W=cn.get(cs[w]);
                        E=cn.get(cs[e]);
                        R=cn.get(cs[r]);
                        for(int a=0;a<4;a++){
                            r0=0d;
                            if(a==0) r0=Q+W;
                            if(a==1) r0=Q-W;
                            if(a==2) r0=Q*W;
                            if(a==3) r0=Q/(W+0.0);
                            for(int s=0;s<4;s++){
                                r1=0d;
                                if(s==0) r1=r0+E;
                                if(s==1) r1=r0-E;
                                if(s==2) r1=r0*E;
                                if(s==3) r1=r0/(E+0.0);
                                for(int d=0;d<4;d++){
                                    r2=0d;
                                    if(d==0) r2=r1+R;
                                    if(d==1) r2=r1-R;
                                    if(d==2) r2=r1*R;
                                    if(d==3) r2=r1/(R+0.0);
                                    if(r2==24.0){

                                        String out=cs[q]+ops[a]+cs[w]+ops[s]+cs[e]+ops[d]+cs[r];
                                        System.out.println(out);
                                        continue first;
                                    }else{
                                        res=0d;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            System.out.println("NONE");
        }
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算24点 的相关文章

  • Java - 因内存不足错误而关闭

    关于如何最好地处理这个问题 我听到了非常矛盾的事情 并且陷入了以下困境 OOME 会导致一个线程崩溃 但不会导致整个应用程序崩溃 我需要关闭整个应用程序 但不能 因为线程没有剩余内存 我一直认为最佳实践是让它们离开 这样 JVM 就会死掉
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • 使用 WebDriver 单击新打开的选项卡中的链接

    有人可以在这种情况下帮助我吗 场景是 有一个网页 我仅在新选项卡中打开所有指定的链接 现在我尝试单击新打开的选项卡中的任何一个链接 在下面尝试过 但它仅单击主 第一个选项卡中的一个链接 而不是在新选项卡中 new Actions drive
  • 如何强制jar使用(或jar运行的jvm)utf-8而不是系统的默认编码

    我的Windows默认编码是GBK 而我的Eclipse完全是utf 8编码 因此 在我的 Eclipse 中运行良好的应用程序崩溃了 因为导出为 jar 文件时这些单词变得不可读 我必须在 bat 文件中写入以下行才能运行该应用程序 st
  • Base36 编码字符串?

    我一直在网上查找 但找不到解决此问题的方法 在 Python Ruby 或 Java 中 如何对以下字符串进行 Base 36 编码 nOrG9Eh0uyeilM8Nnu5pTywj3935kW 5 Ruby 以 36 为基数 s unpa
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • 所有能反演SIF的卫星以及下载链接

    转载自科学网张园博客 http blog sciencenet cn blog 3430406 1223659 html 目录 SCIAMACHY GOME 2 GOSAT OCO 系列卫星 轨道碳观察者 TanSat TROPOMI 调研
  • 信息隐藏预测算法之MED

    MED median edge detector 第一次MED算法概念被提出的论文 http www hpl hp com techreports 98 HPL 98 193 pdf 下图为图像矩阵的一部分 用此为例来说明MED预测算法 其
  • 升级windows10

    前言 windows7已经被微软停更了 所以说 有些用户想升级到windows10 这篇文章 将会教你升级windows10 下载windows10最新安装包 有一个网址 建议大家收藏好 windwos10最新版本官网下载 点进去链接 往下
  • Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class

    From Java中泛型 Class
  • JavaScript Array 对象

    解释 Array 对象用于在变量中存储多个值 语法 var cars Saab Volvo BMW 第一个数组元素的索引值为 0 第二个索引值为 1 以此类推 数组属性 属性 描述 constructor 返回创建数组对象的原型函数 len
  • 数据库关系模型

    数据库关系模型和SQL 文章目录 数据库关系模型和SQL 安装 SQL语句 DCL DDL 关系 候选键 PRIMARY KEY 主键 Foreign KEY 外键 索引Index B 树 约束Constraint 数据库的三大完整性 域约
  • Lua(9) ——Cocos之_从C++过渡到Lua 文章不错 留下备查

    Lua 9 Cocos之 从C 过渡到Lua 唠叨 现在开始学习Lua了 开始用 Cocos Code IDE 开发cocos2dx的游戏了 可是呢 因为 cocos2dx v3 x 刚刚才出来不久 所以网上的教程大部分都是基于C 版本的
  • JNI 基础

    一 JNI 涉及的名词概念 1 1 JNI Java Native Interface 它是Java平台的一个特性 并不是Android系统特有的 实现Java代码调用C C 的代码 C C 的代码也可以调用Java的代码 1 2 二进制库
  • Spring AOP声明式事务

    Spring AOP声明式事务 Spring AOP声明式事务 传统spring配置 SpringBoot配置 Spring AOP声明式事务 Spring AOP声明式事务可以帮我们自动管理事务 在业务操作前后加入事务开始和提交 根据约定
  • vue :class的动态切换

    直接上代码 class index menu index menu index index 点击事件获取下标和获取不同的值 click menuClick index data return menu img menu index0 men
  • 高德地图-2D转换为3D

    手动添加 同时也需要手动修改倾斜度 var map new AMap Map container zoom 17 pitch 90 center 116 379391 39 861536 viewMode 3D 变成了3d 地图了 buil
  • 新能源锂电设备

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 锂电工艺 1 电芯一工段 2 电芯二工段 3 电芯三工段 4 pack生产 二 一工段设备简要介绍 1 合浆机 2 涂布机 2 辊压机 3 分切机 二 一
  • 利用TortoiseGit给github上面上传项目以及上传项目时经常遇到的错误解决

    我们本地有了一个项目 需要托管到github上面去 之前说过用git命令上传 今天说说如何利用TortoiseGit上传 1 假设我们的java工程放在目录E Test中 那么我们进入Test文件夹中 右键菜单点击 Git Create r
  • 关于protected权限的子类访问方式

    声明为protected权限的成员变量和成员方法 可以被同一包中的所有类和不同包中的子类访问 但是 在实际使用中 不同包中的子类要访问父类中protected权限的成员 却不是那么随意的调用 看几个例子 首先在ch13Test包中定义父类A
  • Mysql JDBC支持utf8mb4编码

    项目中需要在mysql中存储包含emoji表情的字段 使用utf8编码无法解决 因为mysql的utf8实现只有3字节 为此mysql在5 3 后加入了utf8mb4支持 完全兼容utf8 utf8mb4最多可用4字节存储一个字符 这样就可
  • hbase建表时region预分区的方法

    hbase建表时region预分区的方法 2015 06 05 13 43 866人阅读 评论 0 收藏 举报 分类 hbase 6 版权声明 本文为博主原创文章 未经博主允许不得转载 如果知道hbase数据表的key的分布情况 就可以在建
  • 【kafka性能测试脚本详解、性能测试、性能分析与性能调优】

    Kafka 性能测试 一 介绍 Apache Kafka 官方提供了两个客户端性能测试脚本 它们的存放位置如下 生产者性能测试脚本 KAFKA HOME bin kafka producer perf test sh 消费者性能测试脚本 K
  • 蓝桥杯 砝码称重 递归 解题报告

    5个砝码 用天平称重时 我们希望用尽可能少的砝码组合称出尽可能多的重量 如果只有5个砝码 重量分别是1 3 9 27 81 则它们可以组合称出1到121之间任意整数重量 砝码允许放在左右两个盘中 本题目要求编程实现 对用户给定的重量 给出砝
  • Java_开源框架_JPinyin汉字转拼音的Java开源库

    本博文为子墨原创 转载请注明出处 http blog csdn net zimo2013 article details 50039339 1 介绍 JPinyin是一个汉字转拼音的Java开源类库 在PinYin4j的功能基础上做了一些改
  • 计算24点

    题目描述 计算24点是一种扑克牌益智游戏 随机抽出4张扑克牌 通过加 减 乘 除 四种运算法则计算得到整数24 本问题中 扑克牌通过如下字符或者字符串表示 其中 小写joker表示小王 大写JOKER表示大王 3 4 5 6 7 8 9 1