计算24点小程序

来源:互联网 发布:tomcat启动数据库报错 编辑:程序博客网 时间:2024/06/05 21:59
//**************24点计算小程序*************    //作者:Linx-huo    //版本:v1.0    //创建时间:2017/04/12//主要功能:随机生成四个数通过加减乘除运算得到24 //           //****************************************  #include<iostream.h>#include <ctime>#include <cstdlib>int jjcc(int a,int b,char sig);int calExpress(int a,int b,int c,int d);char sig[4]={'+','-','*','/'};bool flag=true;int num=0;void main(){ char t;int a,b,c,d,s[4],i,j,k,m;clock_t t1=clock();                           //产生随机数cout<<"计算24点的四个数为"; srand((unsigned)time(NULL)); a=rand()%13+1;b=rand()%13+1;c=rand()%13+1;d=rand()%13+1;cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;cout<<"需要帮助吗?(y/n)"<<endl;if((t=cin.get())=='y'){s[0]=a;s[1]=b;s[2]=c;s[3]=d;for(i=0;i<4;i++)for(j=0;j<4;j++)for(k=0;k<4;k++)for(m=0;m<4;m++)if(i!=j && i!=k && i!=m && j!= k && j!=m && k!=m)if(calExpress(s[i],s[j],s[k],s[m]) ==1) return;if (num==0)    cout << "no answer" << endl;}}int jjcc(int a,int b,char sig)                                 //计算两个数的加减乘除的结并返回{switch(sig){case'+':return a+b;case'-':return a-b;case'*':return a*b;case'/':if(a%b!=0)  flag=false;return a/b;}}int calExpress(int a, int b, int c, int d)                    //寻找满足结果为24的式子{int temp1,temp2,temp3;for(int i=0;i<4;i++){for(int j=0;j<4;j++){for(int k=0;k<4;k++){flag=true;if(i<=1){if(j<=1){temp1=jjcc(c,d,sig[k]);temp2=jjcc(a,b,sig[i]);temp3=jjcc(temp1,temp2,sig[j]);if(temp3==24&&flag==true){num++;cout<<a<<sig[i]<<b<<sig[j]<<c<<sig[k]<<d<<"=24"<<endl;return 1;}}else{temp1=jjcc(b,c,sig[j]);temp2=jjcc(temp1,d,sig[k]);temp3=jjcc(a,temp2,sig[i]);if(temp3==24&&flag==true){cout<<a<<sig[i]<<b<<sig[j]<<c<<sig[k]<<d<<"=24"<<endl;num++;return 1;}}}else{temp1=jjcc(a,b,sig[i]);if(j<=1){temp2=jjcc(c,d,sig[k]);temp3 = jjcc(temp1,temp2,sig[j]);if(temp3 == 24&& flag == true){ num++;cout << a << sig[i] << b << sig[j] <<c << sig[k] << d << " = 24"<< endl;return 1;}}else{temp2 = jjcc(temp1, c, sig[j]);temp3 = jjcc(temp2, d, sig[k]);if(temp3 == 24&& flag == true){num++;cout << a << sig[i] << b << sig[j] <<c << sig[k] << d << " = 24"<< endl;return 1;}}}}}}return 0;}

0 0
原创粉丝点击