二十四点
来源:互联网 发布:js下载图片保存到本地 编辑:程序博客网 时间:2024/04/27 13:37
import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Random;import java.util.Set;import java.util.Scanner;public class Count24 { private List<String> answerList=new ArrayList<String>(); public List<String> getAnswerList() { return answerList; } public static class Data{ public float[] arr; public String expStr=""; public String[] strs; public Data(){} public Data(int a,int b,int c,int d) { arr=new float[]{a,b,c,d}; strs=new String[]{a+"",b+"",c+"",d+""}; expStr=a+""; } public Data(int arr[]) { this.arr=new float[]{arr[0],arr[1],arr[2],arr[3]}; this.strs=new String[]{arr[0]+"",arr[1]+"",arr[2]+"",arr[3]+""}; } } public void count(Data data){ float[] arr=data.arr; if(arr.length<=1){ if(arr.length==1&&arr[0]==24){ answerList.add(data.expStr.substring(1, data.expStr.length()-1)); } return ; } for(int i=0,len=arr.length;i<len-1; i++){ for(int j=i+1;j<len;j++){ float x=arr[i]; float y=arr[j]; String xs=data.strs[i]; String ys=data.strs[j]; for(int k=0;k<6;k++){ Data newData=getNewArr(data,i); switch(k){ case 0: newData.arr[j-1]=x+y; newData.expStr=xs+"+"+ys; break; case 1: newData.arr[j-1]=x-y; newData.expStr=xs+"-"+ys; break; case 2: newData.arr[j-1]=y-x; newData.expStr=ys+"-"+xs; break; case 3: newData.arr[j-1]=x*y; newData.expStr=xs+"*"+ys; break; case 4: if(y!=0){ newData.arr[j-1]=x/y; newData.expStr=xs+"/"+ys; }else { continue; } break; case 5: if(x!=0){ newData.arr[j-1]=y/x; newData.expStr=ys+"/"+xs; }else { continue; } break; } newData.expStr="("+newData.expStr+")"; newData.strs[j-1]=newData.expStr; count(newData); } } } } private static Data getNewArr(Data data, int i) { Data newData=new Data(); newData.expStr=data.expStr; newData.arr=new float[data.arr.length-1]; newData.strs=new String[data.arr.length-1]; for(int m=0,len=data.arr.length,n=0;m<len;m++){ if(m!=i){ newData.arr[n]=data.arr[m]; newData.strs[n]=data.strs[m]; n++; } } return newData; } public static final List<String> easyCount(int[] curRandNums){ Count24 count24=new Count24(); count24.count(new Data(curRandNums)); Set<String> set=new HashSet<String>(count24.getAnswerList()); return new ArrayList<String>(set); } public static void main(String[] args) throws InterruptedException { long start=System.currentTimeMillis(); Scanner in=new Scanner(System.in); System.out.println("Please input four counts:"); int a=in.nextInt(); int b=in.nextInt(); int c=in.nextInt(); int d=in.nextInt(); if(a>0 && b>0 && c>0 && d>0 && a<14 && b<14 && c<14 && d<14 ){ List<String> answerStris=easyCount(new int[]{a,b,c,d}); for (String string : answerStris) { System.out.println(string); } } else System.out.println("Error!"); }}
0 0
- 二十四点算法
- 二十四点
- 二十四点
- 二十四点
- 二十四点游戏代码
- 二十四点游戏代码
- 1261 二十四点游戏
- Scala二十四点游戏
- 初级二十四点游戏
- python实现二十四点
- 二十四点游戏求解算法设计
- 用四个0算二十四点
- 经典二十四点程序算法
- C++ Builder构建算二十四点小游戏
- C++ Builder构建算二十四点小游戏
- 十四、Python编程计算24点(之二)
- 29.二十四点 (15分)(未完待续)
- python获取前一天零点与二十四点的时间
- Node多版本管理
- android 使用download Manager实现应用下载安装
- vue-cli安装
- web前端移动端
- 24点游戏
- 二十四点
- html+css面试题
- servlet解析客户端http请求流程
- MongoDb .net Official Driver 一些用法
- activiti学习笔记7--Deployment cache configuration--20170412
- Java8 新特性之集合: removeIf(Predicate<? super E> filter)
- 丑数
- 利用python对网页和图片的简单爬取
- Spring 下载教程 (适用于最新版Spring官网)