这个,简单点就做穷举就行了
首先,你有4个数字,所以,这四个数字就有24种排列方式
然后就是运算穷举,由于只有简单4则运算,所以运算规则只有(*代表某一种符):
1没括号的(形如a*b*c*d);
2有括号的(形如(a * b) * c * d);
3有括号的(形如(a * b * c) * d);
4有括号的(形如a * (b * c) * d);
5有括号的(形如(a * b) * (c * d));
6有括号的(形如((a * b) * c) * d);
7有括号的(形如(a * (b * c)) * d)。
然后将运算符替换成4则运算符就可以了
下面是我用JAVA简单写的一个sample,你可以参考一下
import?java.io.BufferedReader;
import?java.io.InputStreamReader;
public?class?sum24?{
public?static?void?main(String[]?args)?{
try?{
BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(
System.in));
System.out.println(请输入第一个数:);
String?temp?=?br.readLine();
int?a?=?Integer.parseInt(temp);
if?(a?>?10)?{
a?=?10;
}
if?(a?<?1)?{
a?=?1;
}
System.out.println(请输入第二个数:);
temp?=?br.readLine();
int?b?=?Integer.parseInt(temp);
if?(b?>?10)?{
b?=?10;
}
if?(b?<?1)?{
b?=?1;
}
System.out.println(请输入第三个数:);
temp?=?br.readLine();
int?c?=?Integer.parseInt(temp);
if?(c?>?10)?{
c?=?10;
}
if?(c?<?1)?{
c?=?1;
}
System.out.println(请输入第四个数:);
temp?=?br.readLine();
int?d?=?Integer.parseInt(temp);
if?(d?>?10)?{
d?=?10;
}
if?(d?<?1)?{
d?=?1;
}
int?cont?=?0;
cont?+=?Calculate(a,?b,?c,?d);
cont?+=?Calculate(a,?b,?d,?c);
cont?+=?Calculate(a,?c,?d,?b);
cont?+=?Calculate(a,?c,?b,?d);
cont?+=?Calculate(a,?d,?b,?c);
cont?+=?Calculate(a,?d,?c,?b);
cont?+=?Calculate(b,?a,?c,?d);
cont?+=?Calculate(b,?a,?d,?c);
cont?+=?Calculate(b,?c,?a,?d);
cont?+=?Calculate(b,?c,?d,?a);
cont?+=?Calculate(b,?d,?c,?a);
cont?+=?Calculate(b,?d,?a,?c);
cont?+=?Calculate(c,?a,?b,?d);
cont?+=?Calculate(c,?a,?d,?b);
cont?+=?Calculate(c,?b,?d,?a);
cont?+=?Calculate(c,?b,?a,?d);
cont?+=?Calculate(c,?d,?a,?b);
cont?+=?Calculate(c,?d,?b,?a);
cont?+=?Calculate(d,?a,?b,?c);
cont?+=?Calculate(d,?a,?c,?b);
cont?+=?Calculate(d,?b,?c,?a);
cont?+=?Calculate(d,?b,?a,?c);
cont?+=?Calculate(d,?c,?a,?b);
cont?+=?Calculate(d,?c,?b,?a);
if?(cont?<?1)?{
System.out.println(不可以组成24);
}
}?catch?(Exception?ex)?{
System.out.println(ex.toString());
}
}
private?static?int?Calculate(int?x,?int?y,?int?z,?int?w)?{
if?(x?+?y?+?z?+?w?==?24)
System.out.println(x?+?+?+?y?+?+?+?z?+?+?+?w?+?=24);
if?(x?+?y?+?z?-?w?==?24)
System.out.println(x?+?+?+?y?+?+?+?z?+?-?+?w?+?=24);
else?if?((x?+?y)?*?(z?+?w)?==?24)
System.out
.println((?+?x?+?+?+?y?+?)*(?+?z?+?+?+?w?+?)=24);
else?if?((x?-?y)?*?(z?+?w)?==?24)
System.out
.println((?+?x?+?-?+?y?+?)*(?+?z?+?+?+?w?+?)=24);
else?if?((x?-?y)?*?(z?-?w)?==?24)
System.out
.println((?+?x?+?-?+?y?+?)*(?+?z?+?-?+?w?+?)=24);
else?if?((x?+?y?+?z)?*?w?==?24)
System.out.println((?+?x?+?+?+?y?+?+?+?z?+?)*?+?w?+?=24);
else?if?((x?-?y?-?z)?*?w?==?24)
System.out.println((?+?x?+?-?+?y?+?-?+?z?+?)*?+?w?+?=24);
else?if?((x?+?y?-?z)?*?w?==?24)
System.out.println((?+?x?+?+?+?y?+?-?+?z?+?)*?+?w?+?=24);
else?if?((x?*?y?*?z)?/?w?==?24)
System.out.println((?+?x?+?*?+?y?+?*?+?z?+?)/?+?w?+?=24);
else?if?((x?*?y)?*?(z?+?w)?==?24)
System.out
.println((?+?x?+?*?+?y?+?)*(?+?z?+?+?+?w?+?)=24);
else?if?((x?*?y)?*?(z?-?w)?==?24)
System.out
.println((?+?x?+?*?+?y?+?)*(?+?z?+?-?+?w?+?)=24);
else?if?((x?*?y)?*?z?-?w?==?24)
System.out
.println((?+?x?+?*?+?y?+?)*(?+?z?+?)-?+?w?+?=24);
else?if?((x?*?y)?*?z?+?w?==?24)
System.out
.println((?+?x?+?*?+?y?+?)*(?+?z?+?)+?+?w?+?=24);
else?if?(x?*?y?*?z?*?w?==?24)
System.out.println(x?+?*?+?y?+?*?+?z?+?*?+?w?+?=24);
else?if?((x?+?y)?+?(z?/?w)?==?24)
System.out.println((?+?x?+?+?+?y?+?)+(?+?z?+?/?+?w?+?)
+?=24);
else?if?((x?+?y)?*?(z?/?w)?==?24)
System.out.println((?+?x?+?+?+?y?+?)*(?+?z?+?/?+?w?+?)
+?=24);
else?if?((x?*?y)?+?z?+?w?==?24)
System.out.println((?+?x?+?*?+?y?+?)+?+?z?+?+?+?w?+?=24);
else?if?((x?*?y)?+?z?-?w?==?24)
System.out.println((?+?x?+?*?+?y?+?)+?+?z?+?-?+?w?+?=24);
else?if?((x?*?y)?-?(z?/?w)?==?24)
System.out.println((?+?x?+?*?+?y?+?)-(?+?z?+?/?+?w?+?)
+?=24);
else?if?((x?*?y)?+?(z?/?w)?==?24)
System.out.println((?+?x?+?*?+?y?+?)-(?+?z?+?/?+?w?+?)
+?=24);
else?if?((x?*?y)?-?z?-?w?==?24)
System.out.println((?+?x?+?*?+?y?+?)-?+?z?+?-?+?w?+?=24);
else?if?((x?*?y)?+?(z?*?w)?==?24)
System.out.println((?+?x?+?*?+?y?+?)+(?+?z?+?*?+?w?+?)
+?=24);
else?if?((x?*?y)?-?(z?*?w)?==?24)
System.out.println((?+?x?+?*?+?y?+?)-(?+?z?+?*?+?w?+?)
+?=24);
else?if?((x?*?y)?/?(z?*?w)?==?24)
System.out.println((?+?x?+?*?+?y?+?)/(?+?z?+?*?+?w?+?)
+?=24);
else?if?((x?*?y)?/?(z?-?w)?==?24)
System.out.println((?+?x?+?*?+?y?+?)/(?+?z?+?-?+?w?+?)
+?=24);
else?if?((x?*?y)?/?(z?+?w)?==?24)
System.out.println((?+?x?+?*?+?y?+?)/(?+?z?+?+?+?w?+?)
+?=24);
else
return?0;
return?1;
}
}