没有合适的资源?快使用搜索试试~ 我知道了~
这是我在学习计算智能这门课时所完成的试验报告,使用递归解决了24点问题并作出了深入的分析。程序均通过编译并可以得到结果。
资源推荐
资源详情
资源评论
计算智能第三次上机作业
上机题:游戏者需要用 4 张 1~10 的扑克牌,通过四则运算
得到 24。
一、 初步求解
在考虑这个游戏的时候,参与者需要不断的在脑海中测试这 4 个数的各种组合,对于
计算机来说,同样需要进行对各种可能组合的测试。完成这个测试的比较好的方法就
是递归回溯。我们可以把这四个数看作一个集合 S,只需要任取两个元素进行加减乘
除,将得到的结果继续与集合中剩余的元素进行运算。只要对这两个元素取遍所有可
能的组合,最后必能得到所有结果的集合。
根据以上思路,我们可以画出递归的树型结构:
采用深度优先的搜索方法,可以将整棵树进行便利,对于任选出来的两个元素,需要
连同剩余的元素遍历所有组合。它们之间的组合形式首先是加法,然后是减法,乘法
和除法,首先选择加法进行尝试,保存运算的结果并将这个结果作为一个元素,继续
深入到数的第三层进行计算,直到选了3次,到达了数的底部,说明可以判断结果是否
为24了,如果不是的话,返回的树的上一层,继续选择当前结点的兄弟结点的运算符
进行计算。
这个过程并不复杂 ,只需要注意对减法而言存在着a-b与b-a两种形式,对除法而言,
需要避免除数为零的情况,我们就可以得到如下的一个递归过程:
程序
#define PRECISION 1E-6;
#define NUMBER 4;
#define VALUE 24;
int COUNT=0;
double number[NUMBER];
string OUTPUT_END[NUMBER];
…… …… ……
+ - × ÷ + - × ÷
+ - × ÷
+ - × ÷ + - × ÷ + - × ÷
+ - × ÷
Root
…… …… …… …… …… ……
资源评论
babyfatbabyfat
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功