MATLAB求解24点(抱歉,只会穷举)

室友最近玩24点,于是用MATLAB给他写了个求解的函数。难过等我写完时,他居然先通关了。


主要思路(注:下文用..代表某种运算)

列出所有数字和运算排序
打乱排列顺利
for 所有数字组合
    for 所有运算组合
        取出2个数逐步计算
        考虑( a..b )..( c..d )
        考虑( a..b..c )..d 和 a..( b..c..d )
        if 有任一种结果为24
            return
        end
    end
end

核心思想:

运算符f=‘+-*/'为字符串,MATLAB中可通过f(i)访问某个字符

另外,MATLAB可通过str2num函数,将字符串转为运算

结果的输出放在子函数中,一旦结果为24或接近24(误差小于0.001,考虑截断误差),则打印对应表达式


主函数:

function  point24_plus()
%POINT24_PLUS速解24点
% by FisherC
A = input('input 4 number: ');
% 检查是否符合规范
check = A>0 & A<11;
if sum(check)<4fprintf('输入矩阵不合规范&#x


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部