室友最近玩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)<4
fprintf('输入矩阵不合规范&#x