24点java代码

来源:互联网 发布:淘宝信誉评价表 编辑:程序博客网 时间:2024/06/06 09:32

这是24点游戏的代码,输入4个数(空格隔开),输出4个数的不同组合,算出24。输出所有结果,答案会因为交换顺序而有重复。
很抱歉没有注释。。。

package _24net;

import java.util.Scanner;

public class _24net {

public static void main(String[] args) {    // TODO Auto-generated method stub    Scanner scanner = new Scanner(System.in);    int[] a= {0,0,0,0};    for(int i = 0; i< 4;i++){        a[i] = scanner.nextInt();    }    f(a,3);    System.out.println("over");}private static void f(int[] a,int b) {    if(b==0){        f2(a,3,"");        return;    }    int t;    for(int i = b;i >= 0; i--){        t = a[i];        a[i] = a[b];        a[b] = t;         f(a, b-1);        t = a[i];        a[i] = a[b];        a[b] = t;     }}private static void f2(int[] a,int b,String s) {    if(b==0){        if(a[0]==24)        System.out.println(s);        return;    }    if(b==2){        int m = a[2];        a[2] = a[0];        a[0] = m;        int t;        t = a[b-1];        a[b-1] = a[b]+t;        f2(a, b-1,s+a[b]+" + "+t+" = "+a[b-1]+"; ");        a[b-1] = t;         t = a[b-1];        a[b-1] = a[b]-t;        f2(a, b-1,s+a[b]+" - "+t+" = "+a[b-1]+"; ");        a[b-1] = t;         t = a[b-1];        a[b-1] = a[b]*t;        f2(a, b-1,s+a[b]+" * "+t+" = "+a[b-1]+"; ");        a[b-1] = t;         t = a[b-1];        if(t != 0 ){            a[b-1] = a[b]/t;            f2(a, b-1,s+a[b]+" / "+t+" = "+a[b-1]+"; ");            a[b-1] = t;        }        t = a[b-1];        if( a[b] != 0 ){            a[b-1] = t/a[b];            f2(a, b-1,s+t+" / "+a[b]+" = "+a[b-1]+"; ");            a[b-1] = t;            }        m = a[2];        a[2] = a[0];        a[0] = m;    }    int t1;    t1 = a[b-1];    a[b-1] = a[b]+t1;    f2(a, b-1,s+a[b]+" + "+t1+" = "+a[b-1]+"; ");    a[b-1] = t1;     t1 = a[b-1];    a[b-1] = a[b]-t1;    f2(a, b-1,s+a[b]+" - "+t1+" = "+a[b-1]+"; ");    a[b-1] = t1;     t1 = a[b-1];    a[b-1] = a[b]*t1;    f2(a, b-1,s+a[b]+" * "+t1+" = "+a[b-1]+"; ");    a[b-1] = t1;     t1 = a[b-1];    if(t1 != 0){        if(a[b]%t1==0){        a[b-1] = a[b]/t1;        f2(a, b-1,s+a[b]+" / "+t1+" = "+a[b-1]+"; ");        a[b-1] = t1;        }    }    t1 = a[b-1];    if(a[b] != 0){        if(t1%a[b]==0){        a[b-1] = t1/a[b];        f2(a, b-1,s+t1+" / "+a[b]+" = "+a[b-1]+"; ");        a[b-1] = t1;        }    }}   

}