初学java,编写了一个计算24点的程序,时间有限,有些粗糙,不过可以使用。
//-------------Cal24.java---------------
//计算24点程序
//作者:徒步天下(hiker2008.blog.51cto.com)
//
//运行格式: java Cal24 abcd
//abcd为四个1-9数字
//
//输出为结果等于24的算式,及个数
import java.util.*;
public class Cal24 {
String[] op;
Set num = new HashSet();
public static void main(String[] args) {
Cal24 cal24;
if (args.length<1) {
System.out.println("Usage Cal24 abcd");
return;
}
cal24 = new Cal24(args[0]);
cal24.pEx();
}
//初始化数字组合和符号组合
Cal24(String inputnum) {
//生成所输入abcd四个数字的全排列(不可重复使用,如aaaa),去掉重复的,保存在 num 字符串集合
for (int i=0;i<4;i++) {
for (int j=0;j<4;j++) {
for (int k=0;k<4;k++) {
if (i==j || i==k || k==j) //去掉重复使用同一数字的情况
continue;
int z=6-i-j-k; //计算出剩下的第四个数。 i+j+k+z=6
num.add(new String(inputnum.substring(i,i+1)+inputnum.substring(j,j+1)
+inputnum.substring(k,k+1)+inputnum.substring(z,z+1)));
}
}
}
// 生成+-×/符号的全排列(可重复使用,如+++),保存在 op 字符串数组
op = new String[64];
String t="+-*/";
for (int i=0;i<4;i++) {
for (int j=0;j<4;j++) {
for (int k=0;k<4;k++) {
int z=i*16+j*4+k;
op[z]=new String(t.substring(i,i+1)+t.substring(j,j+1)&#