首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

用加减乘除计算二十四点的程序

2013-11-08 
用加减乘除计算24点的程序同事给我出了一道算24的智力题,{5,5,5,1} 算24.最后没有算出来。写了一个能得出答

用加减乘除计算24点的程序

同事给我出了一道算24的智力题,{5,5,5,1} 算24.最后没有算出来。

写了一个能得出答案的程序,不过,里面会有很多重复的答案。。

public class Suan24 {public static void main(String args[]) {float a[] = { 5, 5, 5, 1 };pp(a, "");}/** * 参数a为传入的数组,后面的sf为输出内容。 */public static void pp(float a[], String sf) {int lev = a.length;if (lev == 1) {if (a[0] == 24) {System.out.println(sf);System.out.println("成功");}} else {// 这两个for循环是随机取出两个值,为了后边的计算。for (int i = 0; i < lev; i++) {for (int j = 0; j < lev; j++) {if (i == j) {continue;}// 这个数组是为了存储没有计算过的数字float[] aa = new float[lev - 1];int tem = 0;for (int z = 0; z < lev; z++) {if (z == i || z == j) {continue;}aa[tem] = a[z];tem++;}// 这一步是将取出的计算的两个数字计算,将计算后的数字和前面没有计算的数字组到一起。aa[tem] = a[i] + a[j];// 这里是继续循环,数组的长度少了一位。pp(aa, sf + a[i] + "+" + a[j] + "=" + aa[tem] + "-----");// 和上面一样。aa[tem] = a[i] * a[j];pp(aa, sf + a[i] + "*" + a[j] + "=" + aa[tem] + "-----");aa[tem] = a[i] - a[j];pp(aa, sf + a[j] + "-" + a[i] + "=" + aa[tem] + "-----");aa[tem] = a[i] / a[j];pp(aa, sf + a[i] + "/" + a[j] + "=" + aa[tem] + "-----");}}}}}

?最后算出结果了。

1.0/5.0=0.2-----5.0-0.2=4.8-----4.8*5.0=24.0

?现在在想怎么才可以让结果没有重复的呢?

?

热点排行