24点游戏
来源:互联网 发布:电脑自动还原软件 编辑:程序博客网 时间:2024/06/16 21:24
1.问题描述
输入4个整数,运用四则元素,可以加括号,判断其运算结果能不能是24。
2.相关定理
s是一个有理数的集合。
函数f(s)定义如下:
如果s中只有一个元素,则f(s)=s;
否则,f(s)=∪f(s-{r1,r2}+{r}),r1,r2是s中的任意两个元素,r的取值为r1和r2进行四则运算的结果。
因此我们从s中任取两个元素,求其四则运算的结果r,集合中元素的个数就减少了,继续递归下去,最后只剩两个元素,进行四则运算看其结果是否是24。
3.代码
package cn.edu.hit;import java.util.Scanner;public class TwentyFour2 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int[] array = new int[4];for (int i = 0; i < array.length; i++) {array[i] = in.nextInt();}TwentyFour2 t = new TwentyFour2();if(t.equal(4, array)){System.out.println(true);}else{System.out.println(false);}}public boolean equal(int n,int[] array) {if(n==1){//只剩最后一个元素if(array[0]==24){return true;}else{return false;}}for (int i = 0; i < n; i++) {for (int j = i+1; j < n; j++) {int a,b;a = array[i];b = array[j];array[j] = array[n-1];//将最后一个数移过来array[i] = a+b;if(equal(n-1, array)){return true;}array[i] = a-b;if(equal(n-1, array)){return true;}array[i] = b-a;if(equal(n-1, array)){return true;}array[i] = a*b;if(equal(n-1, array)){return true;}if(b!=0){array[i] = a/b;if(equal(n-1, array)){return true;}}if(a!=0){array[i] = b/a;if(equal(n-1, array)){return true;}}//如果进行以上四则运算不能得到24,则恢复数据,选取其他两个数array[i] = a;array[j] = b;}}return false;}}
阅读全文
0 0
- 24点游戏代码
- 24点游戏
- 24点扑克牌游戏
- 24点游戏
- 24点游戏
- 《24点游戏》
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏源码
- 24点游戏
- 24点游戏-hero
- 24点游戏
- 24点游戏算法
- MySQL5.6之Index Condition Pushdown(ICP,索引条件下推)
- 大数据时代下的SQL Server第三方负载均衡方案----Moebius测试
- 求二叉树的高度
- 2017全球架构师峰会【 持续更新中~~】
- 2016 PJ 题解
- 24点游戏
- CSS中常用的几种定位方式
- 对request.getSession(false)以及参数为true的理解
- JS添加类似C# string.Format方法
- 源码解析为什么覆盖equals方法时总要覆盖hashCode方法
- 12、 IPython&Jupyter Notebook 的快捷键、Magic 命令以及远程服务器的调用
- Android连按两次回退按钮退出程序
- 虚拟存储器·十
- 树状数组模版