关于
24
点游戏的编程思路与基本算法
设计思路
:
在算
24
点时候,我的第一反应便是穷举法!在算
24
点时候,我的思路就
是列出
4
个数字加减乘除的各种可能性,
包括括号的算法。
我们可以将表达式分
成以下几种:首先我们将
4
个数设为
a
,
b
,
c
,
d
,
,其中算术符号有
+
,
-
,
*
,
/
,
。
其中有效的表达式有
a
,
ab-cd
,等等。列出所有有效的表达式。其中我们用枚举
类型将符号定义成数字常量,比如用
1
表示
+
,
2
表示
-
等。如下是我对穷举法的
一种编程语言。在编程的头部要对变量做下定义。
在输入数字前我做了定义,因为题目规定是
1-10
内不相同的数字。所以我
就
想
到
了
if
的
判
断
语
句
来
写
此
句
话
。
即
if((a==b)||(a==c)||(a==d)||(b==c)||(b==d)||(c==d)||(a<0)||(a>10)||(b<0)||(b>10)||(c<0)||(c
>10)||(d<0)||(d>10))
则输入非法。当输入合法时,我就在想,
4
个数都有各自的排
列,所以运用数学的排列组合来算的的,分别是
A44=24
种组合,打个比方,我
入、
、输入
a
,
b
,
c
,
d
,那么就有
abdc,badc,bacd``````
等
24
种不同的组合,在这
里我就不一一列举,在源代码当中我会一一写在程序里。
在运算时,我开始想,得从括号分类起,有零括号的,一个括号的,两个括号
的。
以下是表达式,当然,
*
并不是
×
,
*
只是符号的统称。
零个括号的:
a*b*c*d
。
一个括号的:
(a * b * c) * d
,
a * (b * c) * d
。
两个括号的:
(a * b) * (c * d)
,
(a * b) * c) * d
,
a * (b * c)) * d
接下来就是对每一种进行分析判断。
以上就是穷举法的基本实现算法
首先穷举的可行性问题。我把表达式如下分成三类:
1
、
列出四个数的所有排序序列组合(共有
A44=24
种组合)
。
2
、
构筑一个函数,列出所有运算表达式。
3
、
输入数据计算。