24点算法的Java低级简易实现


package test;

/**
* @author QuarterLifeForJava
*/
public class Test {

public static void main(String[] args) {
int x[] = {8,8,3,3};
int y[] = new int[x.length];
for(int a=0;a<4;a++){
for(int b=0;b<4;b++){
for(int c=0;c<4;c++){
for(int d=0;d<4;d++){
if(a!=b&&b!=c&&c!=d&&d!=a&&a!=c&&b!=d){
y[0] = x[a];
y[1] = x[b];
y[2] = x[c];
y[3] = x[d];
for(int i=0;i<4;i++){
circle(y,i);
}
}
}
}
}
}

}

//边界判断
public static boolean boundaryJudgment(double result){
if(result>=23.99999999999999&&result<=24.00000000000001){
return true;
}else{
return false;
}
}

//加
public static double jia(double x,double y){
return x+y;
}

//减
public static double jian(double x,double y){
return x-y;
}

//乘
public static double cheng(double x,double y){
return x*y;
}

//除
public static double chu(double x,double y){
return x/y;
}

//循环选择
public static double change(int num,double x,double y){
switch(num){
case 0:
return jia(x,y);
case 1:
return jian(x,y);
case 2:
return cheng(x,y);
case 3:
return chu(x,y);
}
return 0;
}

//循环计算
public static void circle(int x[],int choice){
double mid = 0;
double y = 0;
double z = 0;
for(int i=0;i<4;i++){
mid = change(i,x[0],x[1]);
z = mid;
for(int j=0;j<4;j++){
mid = z;
switch(choice){
case 0:
mid = change(j,mid,x[2]);
for(int k=0;k<4;k++){
y = mid;
mid = change(k,mid,x[3]);
if(boundaryJudgment(mid)){
System.out.println("可算24点");//想输出结果,请自己写个方法,这里略了
System.exit(0);
}else{
mid = y;
}
}
break;
case 1:
mid = change(j,mid,x[2]);
for(int k=0;k<4;k++){
y = mid;
mid = change(k,x[3],mid);
if(boundaryJudgment(mid)){
System.out.println("可算24点");//想输出结果,请自己写个方法,这里略了
System.exit(0);
}else{
mid = y;
}
}
break;
case 2:
mid = change(j,x[2],mid);
for(int k=0;k<4;k++){
y = mid;
mid = change(k,mid,x[3]);
if(boundaryJudgment(mid)){
System.out.println("可算24点");//想输出结果,请自己写个方法,这里略了
System.exit(0);
}else{
mid = y;
}
}
break;
case 3:
mid = change(j,x[2],mid);
for(int k=0;k<4;k++){
y = mid;
mid = change(k,x[3],mid);
if(boundaryJudgment(mid)){
System.out.println("可算24点");//想输出结果,请自己写个方法,这里略了
System.exit(0);
}else{
mid = y;
}
}
break;
}
}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值