⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 disspp.m

📁 一个24点的matlab程序
💻 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 + -