24点(随机输出四个数,输出所有结果为24的等式)

#include <iostream> 


#include <string> 


#include <math.h> 


#include"time.h" /*需引用的头文件*/


using namespace std; 


const double LING = 1E-6; 


const int CONT = 4; 


const int VOLUE = 24; 


double number[CONT]; 


string biaodashi[CONT]; 


bool Panduan = false;                    //判断是否有解。


int count = 0;  


void Chazhao(int n) 





      if (n == 1)


   { 


            if ( fabs(number[0] - VOLUE) <= LING   ) 


   {        


       cout << biaodashi[0] << "\t\t";


      Panduan = true;


      count ++;


      if((count % 3)==0) //使输出时每行三个表达式


       cout<<endl;


            } 


   else


   {   } 


       } 


       for(int i=0; i < n; i++)//查找


    {


                for (int j = i + 1; j < n; j++)//与其后面的查找进行计算


    { 


        double  a, b; 


        string  expa, expb; 


        a = number[i]; 


        b = number[j]; 


        number[j] = number[n - 1];  


   expa = biaodashi[i]; 


        expb = biaodashi[j]; 


        biaodashi[j] = biaodashi[n - 1];


         biaodashi[i]= '('+ expa + '+' + expb + ')'; 


         number[i] = a + b; 


         Chazhao(n-1);


         biaodashi[i]='('+ expa+ '-' + expb + ')';  


         number[i] = a - b; 


         Chazhao(n-1);  


         biaodashi[i] = '('+expb + '-' + expa + ')';  


         number[i] = b -a; 


         Chazhao(n-1);                                            


         biaodashi[i]= '('+ expa +'*'+ expb+ ')';  


         number[i]=a*b; 


         Chazhao(n-1); 


        if (b != 0)


      {


         biaodashi[i] ='('+expa+'/' + expb + ')';  


         number[i] = a / b; 


         Chazhao(n-1); 


       }   


        if (a != 0)


      { 


            biaodashi[i]='('+expb + '/'+ expa + ')';  


            number[i] = b / a; 


            Chazhao(n-1); 


      } 


       number[i] =a;        


       number[j]=b;        


       biaodashi[i] = expa;          


       biaodashi[j] = expb;         


                } 


    }





int main() 



int X=1,Y=13;

srand((unsigned)time(NULL)); /*随机种子*/  
  

cout<<"随机产生四个数"<<endl;


for (int i = 0; i < CONT; i++)

 {

    char   ch[20];  


   number[i]=rand()%(Y-X+1)+X;


    cout<<number[i]<<"  ";          

     

    itoa(number[i],ch, 10);   //itoa()函数的作用是把第一个参数(数值)传送(转换)到第二个参数(字符串)中去,第三个参数(int型)是该数值在字符串里以什么进制存放。


    biaodashi[i] = ch; 


        }


 cout<<endl;


 Chazhao(CONT) ;


 if(Panduan==true)


 { 


     cout   << "\n成功!" << endl;


    cout<<"总共的计算方法共有: "<<count<<endl;


        } 


 else


 { 


            cout << "失败!"   <<   endl; 


        }      


 return 0;


}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值