24点小游戏利用深度搜索设计
来源:互联网 发布:期货实时数据接口 编辑:程序博客网 时间:2024/05/06 11:27
Poker.class
public class Poker {
private String pokers;
private booleanflag;
public Poker(String pokers){
this.flag =false;
setPokers(pokers);
}
public String getPokers() {
returnpokers;
}
public void setPokers(String pokers) {
if("A".equals(pokers)){
this.pokers ="1";
}
else if("J".equals(pokers)){
this.pokers ="11";
}
else if("Q".equals(pokers)){
this.pokers ="12";
}
else if("K".equals(pokers)){
this.pokers ="13";
}else{
this.pokers = pokers;
}
}
public boolean isFlag() {
returnflag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
Algorithm.class
import java.util.List;
public class Algorithm {
public staticboolean isFinish =false;
Operators operator = Operators.getInstance();
public void dfs(List<Poker> pokerList,int num,double count,String ans){
//当24点并且使用了4张牌之后表示成功
if(isFinish){
return ;
}
if(4==num&&24==count){
System.out.println(ans);
System.out.println("Done!!!!!!!!!!!!!!!!!!!!!!");
System.out.println("");
isFinish =true;
return ;
}
//因为每个牌组都有可能存在很多组合所以需要标记是否找到一个组合就可以
//确保每张牌都使用过
for(int i=0;i<pokerList.size();i++){
Poker p = pokerList.get(i);
//选择没使用的牌
if(!pokerList.get(i).isFlag()){
//判断小鬼和大鬼
if("joker".equals(p.getPokers())||"JOKER".equals(p.getPokers())){
System.out.println("ERROR \n");
return ;
}
//加法
p.setFlag(true);
if(ans!=""&&ans!=null){
dfs(pokerList,num+1,operator.plus(count,Double.valueOf(p.getPokers())),ans+"+"+p.getPokers());
}else
{
dfs(pokerList,num+1,operator.plus(count,Double.valueOf(p.getPokers())),ans+p.getPokers());
}
if(num>0){
//减
dfs(pokerList,num+1,operator.minus(count,Double.valueOf(p.getPokers())),ans+"-"+p.getPokers());
//乘
dfs(pokerList,num+1,operator.multiplication(count,Double.valueOf(p.getPokers())),ans+"*"+p.getPokers());
//除
dfs(pokerList,num+1,operator.division(count,Double.valueOf(p.getPokers())),ans+"/"+p.getPokers());
}
p.setFlag(false);
}
}
if(isFinish){
return ;
}
}
}
Operators.class
public class Operators {
private static Operatorsinstance;
private Operators(){
}
//防止过多地新建实例消耗内存,使用单例模式
public static Operators getInstance(){
if(null ==instance){
instance =new Operators();
}
returninstance;
}
public double plus(double a,double b){
return a+b;
}
public double minus(double a,double b){
return a-b;
}
public double multiplication(double a,double b){
return a*b;
}
public double division(double a,double b){
return a/b;
}
}
Test24.class
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test24 {
public static void main(String[] args) {
int num = 0;
double count = 0;
String ans = "";
List<Poker> pokerList = new ArrayList<Poker>();
Scanner in=new Scanner(System.in);
for(int i=0;i<4;i++){
Poker p = new Poker(in.next());
pokerList.add(p);
}
Algorithm a = new Algorithm();
if(null!=pokerList.get(0)){
}
a.dfs(pokerList, num, count, ans);
if(!Algorithm.isFinish){
System.out.println("None");
}
}
}
- 24点小游戏利用深度搜索设计
- 利用深度优先搜索算法寻找割点
- 利用深度优先搜索做的随机生成地图的迷宫小游戏
- c++:深度优先搜索(24点)
- 24点小游戏
- 速算24点小游戏
- 24点小游戏
- 24点小游戏算法
- 算24点小游戏
- 24点小游戏
- 设计一个Android关于24点的小游戏之一(24点算法设计)
- OpenJudge百炼-2802-小游戏-C语言-深度优先搜索
- 一个24点的小游戏~
- 24点休闲益智小游戏
- js版算24点小游戏
- 深度优先搜索寻找割点
- 利用Kinect深度图像生成三维点
- 24点小游戏(c语言)
- 如何用servlet模拟一个简单的登陆
- 四元数与欧拉角之间的转换
- eclipse报错
- Qt中文显示
- linux设置永久路由
- 24点小游戏利用深度搜索设计
- ListView获取选中和长按菜单对应的item的_id值
- Android 下拉刷新框架实现
- Valid Number
- JAVA 输入部分
- 黑马程序员_类和对象的基础语法(二)
- HDU2093--考试排名
- web.xml配置参数,并在serlvet取得该值
- Linux下的多进程编程初步(转载)