📄 disspp.m
字号:
function disspp(x)
% 此程序解决经典的24点游戏
% disspp(x)
% example:x=[3 3 8 8]
% disspp(x)
% 算法在网上有的,也可以编c++,java,asp,jap,html&etc,有兴趣者可以试试
% copyright:\流水
% 编写于5月27日晨
if nargin==0
x=[6 6 6 6];
end
global number expression
number=x;
for i=1:4
expression{i}=number(i);
end
number=x;
bol=search(4);
if bol==1
disp('Sucess.')
else
disp('fail');
end
function bool=search(n)
global number expression
PRECISION=1e-6;
% COUNT_OF_NUMBER=4;
NUMBER_TO_BE_CAL=24;
if n==1
if abs(number(1)-NUMBER_TO_BE_CAL)<PRECISION
for i=1:length(expression{1})
if expression{1}(i)>30
a{i}=char(expression{1}(i));
else
a{i}=num2str(expression{1}(i));
end
end
a=cell2mat(a);
disp(a);
bool=1;
return
else
bool=0;
return
end
end
for i=1:n
for j=i+1:n
a=number(i);
b=number(j);
number(j)=number(n);
expa=expression{i};
expb=expression{j};
expression{j}=expression{n};
expression{i}=[40,expa,43,expb,41];
global expression
number(i)=a+b;
if search(n-1)
global expression
bool=1;
return
end
expression{i}=[40,expa,45,expb,41];
number(i)=a-b;
if search(n-1)
global expression
bool=1;
return
end
expression{i}=[40,expb,45,expa,41];
number(i)=b-a;
if search(n-1)
global expression
bool=1;
return
end
expression{i}=[40,expa,42,expb,41];
number(i)=a*b;
if search(n-1)
global expression
bool=1;
return
end
if b~=0
expression{i}=[40,expa,47,expb,41];
number(i)=a/b;
if search(n-1)
global expression
bool=1;
return
end
end
if a~=0
expression{i}=[40,expb,47,expa,41];
number(i)=b/a;
if search(n-1)
global expression
bool=1;
return
end
end
number(i)=a;
number(j)=b;
expression{i}=expa;
expression{j}=expb;
end
end
bool=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -