24点游戏java_24点游戏动态规划解法(java)
算法原理参考编程之美1.16章节解法2:
下面是java源码:子问题为S[i] U= Fork(f(x),f(i-x));
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
class Elem{
public double res;
public String info;
public Elem(double r,String i){
res = r;
info = i;
}
}
public class CalculateAnswer {
private final int N = 4;
private final int res = 24;
private int[] A;
private Map> map;
private Set answers;
public CalculateAnswer(int[] a) {
A = a;
map = new HashMap>();
answers = new HashSet();
}
public void run() {
for(int i=0;i
Set set = new HashSet();
map.put(i,set);
}
for(int i=0;i
Elem e = new Elem(A[i], A[i]+"");
Set set = new HashSet();
set.add(e);
map.put(1<
}
for (int i = 1; i < (1 << N); i++) {
fork(i);
}
Set mSet = map.get((1<
for(Elem e:mSet){
if(e.res==res) {
answers.add(e.info);
}
}
if(answers.size()==0){
System.out.println("无解");
}
else {
for(String s:answers)
System.out.println(s);
System.out.println("共有"+answers.size()+"个解");
}
}
public Set fork(int m) {
Set mSet = map.get(m);
if(mSet.size()>0)
return mSet;
else {
for(int x = 1; x <= m ; x++) {
if((x&m)==x){
Set s1 = fork(x);
Set s2 = fork(m-x);
for(Elem e1: s1) {
for(Elem e2:s2) {
String str = "("+e1.info+"+"+e2.info+")";
mSet.add(new Elem(e1.res+e2.res, str));
str = "("+ e1.info+"-"+e2.info+")";
mSet.add(new Elem(e1.res-e2.res, str));
str = "("+ e2.info+"-"+e1.info+")";
mSet.add(new Elem(e2.res-e1.res, str));
str = "("+ e1.info+"*"+e2.info+")";
mSet.add(new Elem(e1.res*e2.res, str));
if(e1.res!=0) {
str = "("+ e2.info+"/"+e1.info+")";
mSet.add(new Elem(e2.res/e1.res, str));
}
if(e2.res!=0){
str = "("+ e1.info+"/"+e2.info+")";
mSet.add(new Elem(e1.res/e2.res, str));
}
}
}
}
}
return mSet;
}
}
public static void main(String[] args) {
int[] a = new int[4];
Scanner sc = new Scanner(System.in);
for(int i = 0;i<4;i++) {
a[i] = sc.nextInt();
}
CalculateAnswer cal = new CalculateAnswer(a);
cal.run();
sc.close();
}
}
24点游戏java_24点游戏动态规划解法(java)相关推荐
- 一个有趣的博弈或推理游戏——除数博弈(动态规划与归纳法)
除数博弈 除数博弈(Divisor Game)是我在leetcode上遇到的一个题目,它的描述如下: Alice and Bob take turns playing a game, with Ali ...
- 超超超超级详细的多边形游戏问题分析(动态规划)
多边形游戏 问题简介 问题分析 超详细解题步骤 Java代码实现 多边形游戏 问题简介 首先呢,介绍一下多边形游戏是个什么东东 多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形.每个顶 ...
- 抖音热门游戏Fill one-line puzzle game解法的Python代码实现
抖音热门游戏Fill one-line puzzle game解法的Python代码实现 导语 思路 代码 验证 谢谢小李同学的提醒,加上了无解的判断,不然如果无解就进入死循环了! 版权声明:原创文章 ...
- 猜数字游戏Bulls and Cows的解法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 猜数字游戏Bulls and Cows的解法 前言 一.游戏规则 二.电脑出题你来猜 1.引入库 2.生成随机四位数密码 3.接收玩家 ...
- Unity中制作游戏的快照游戏支持玩家拍快照
Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家"拍快照",也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介 ...
- 【Iphone 游戏开发】游戏引擎剖析
为什么80%的码农都做不了架构师?>>> 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame. ...
- Nim 游戏 、⽯头游戏1、石头游戏2
Nim 游戏 .⽯头游戏1.石头游戏2 文章目录 Nim 游戏 .⽯头游戏1.石头游戏2 **一:Nim 游戏** **二:⽯头游戏** **三.石头游戏2** **方法一:DP 函数** **方法二 ...
- 一年突破3亿游戏安装量 小米游戏双发行模式助力游戏开发者
2020年,全球市场迎来了颠覆式的新格局,挑战与机遇并存.一方面,疫情导致大量消费者居家隔离,线上业务迎来了爆发式增长;另一方面,文化冲突.数据隐私.地缘关系等因素对海外业务都增加了更多不确定性.对于 ...
- 教你如何用Unity和Cardboard把3D游戏做成VR游戏
原网址 随着Oculus宣布1月6日开启预售,2016年很可能成为VR游戏元年,但很多的调研显示,手游设备才是市场增长的关键,SuperData发布的报告显示,2016年全球VR游戏市场规模预计在51 ...
最新文章
- Delphi XE4 For IOS之部署问题
- tensorflow1中如何设置GPU的使用
- 【Echarts 3.x】填坑记
- 使用nginx部署简单的前端项目,nginx.conf配置
- 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题...
- c语言如何输入矩阵_如何在 COMSOL 软件中调试外部材料
- All Friends 极大团
- ZigBee On Windows Mobile-ZigBee模块的设计制作
- 证书格式简介及不同格式之间的转换方式
- ExtJs + Struts2 + JSON 程序总结
- 页面中,通过css设置文本不能被选中
- 七、Oracle学习笔记:数值函数
- CorelDraw x6【Cdr x6】官方简体中文破解版(64位)安装图文教程、破解注册方法...
- Mysql的用户与权限管理
- 【神经网络算法入门】详细推导全连接神经网络算法及反向传播算法+Python实现代码
- html背景图片自适应屏幕
- jdk和jre有什么区别?
- PHP实现牛津英汉词典
- php 使用xunsearch--迅搜
- 密码包含大写小写的英文字母数字和特殊字符正则
热门文章
- MySQL 4种text类型的最大长度
- 在hive的beeline下,Error: org.apache.thrift.transport.TTransportException: java.net.SocketException: Bro
- hive提交命令org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Error parsing application ID:
- 面试必会系列 - 5.3 LVS负载均衡
- Spring Boot中使用Swagger CodeGen生成REST client
- Java知识整理——远程方法调用
- nfcwriter下载 ios_iphone12支持在5G蜂窝数据下下载IOS更新
- MyBatis3 用log4j在控制台输出 SQL----亲测,真实可用
- Effective Java之返回零长度的数组或者集合,而不是null(四十三)
- 【高效解法】1065 单身狗 (25分)_27行代码AC