#include <iostream>
#include <windows.h>
#include <string>
#include <math.h>
using namespace std;
const double LING=1e-2;
const int CONT=4;
const int VOLVE=24;
double number[CONT];
string eps[CONT];
bool m_judge=false;
int count=0;
void Find(int n)
{
if(n==1)
{
if(fabs(number[0]-VOLVE)<=LING)
{
cout<<eps[0]<<"\t\t";
m_judge=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 epsa,epsb;
a=number[i];
b=number[j];
number[j]=number[n-1];
epsa=eps[i];
epsb=eps[j];
eps[j]=eps[n-1];
eps[i]='('+epsa+'+'+epsb+')';
number[i]=a+b;
Find(n-1);
eps[i]='('+epsa+'-'+epsb+')';
number[i]=a-b;
Find(n-1);
eps[i]='('+epsb+'-'+epsa+')';
number[i]=b-a;
Find(n-1);
eps[i]='('+epsa+'*'+epsb+')';
number[i]=a*b;
Find(n-1);
if(b=!0)
{
eps[i]='('+epsa+'/'+epsb+')';
number[i]=a/b;
Find(n-1);
}
if(a!=0)
{
eps[i]='('+epsb+'/'+epsa+')';
number[i]=b/a;
Find(n-1);
}
number[i]=a;
number[j]=b;
eps[i]=epsa;
eps[i]=epsb;
}
}
}
int main(void)
{
int j;
system("color f3");
printf("\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t %c ",1);
printf("欢迎登陆二十四点游戏\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("正在进入,请稍等...\n");
printf("★★★★★★★★★★★★\r");
for(j=0;j<10;j++)
{
Sleep(50);
printf(">");
}
system("cls");
/************??*********************/
/**************????**************/
int k;
do
{
cout<<"请输入四个数:\n";
for(int i=0;i<CONT;i++)
{
char ch[20];
cout<<"第"<<i+1<<"个数:";
cin>>number[i];
itoa(number[i],ch,10);
eps[i]=ch;
}
cout<<endl;
Find(CONT);
if(m_judge==true)
{
cout<<"\n成功!"<<endl;
cout<<"总共的计算方法有多少种:"<<CONT<<endl;
}
else
{
cout<<"失败!"<<endl;
}
printf("\n再继续请输入1,退出请输入0:\n");
scanf("%d",&k);
}while(k==1);
return 0;
}
#include <windows.h>
#include <string>
#include <math.h>
using namespace std;
const double LING=1e-2;
const int CONT=4;
const int VOLVE=24;
double number[CONT];
string eps[CONT];
bool m_judge=false;
int count=0;
void Find(int n)
{
if(n==1)
{
if(fabs(number[0]-VOLVE)<=LING)
{
cout<<eps[0]<<"\t\t";
m_judge=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 epsa,epsb;
a=number[i];
b=number[j];
number[j]=number[n-1];
epsa=eps[i];
epsb=eps[j];
eps[j]=eps[n-1];
eps[i]='('+epsa+'+'+epsb+')';
number[i]=a+b;
Find(n-1);
eps[i]='('+epsa+'-'+epsb+')';
number[i]=a-b;
Find(n-1);
eps[i]='('+epsb+'-'+epsa+')';
number[i]=b-a;
Find(n-1);
eps[i]='('+epsa+'*'+epsb+')';
number[i]=a*b;
Find(n-1);
if(b=!0)
{
eps[i]='('+epsa+'/'+epsb+')';
number[i]=a/b;
Find(n-1);
}
if(a!=0)
{
eps[i]='('+epsb+'/'+epsa+')';
number[i]=b/a;
Find(n-1);
}
number[i]=a;
number[j]=b;
eps[i]=epsa;
eps[i]=epsb;
}
}
}
int main(void)
{
int j;
system("color f3");
printf("\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t %c ",1);
printf("欢迎登陆二十四点游戏\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("正在进入,请稍等...\n");
printf("★★★★★★★★★★★★\r");
for(j=0;j<10;j++)
{
Sleep(50);
printf(">");
}
system("cls");
/************??*********************/
/**************????**************/
int k;
do
{
cout<<"请输入四个数:\n";
for(int i=0;i<CONT;i++)
{
char ch[20];
cout<<"第"<<i+1<<"个数:";
cin>>number[i];
itoa(number[i],ch,10);
eps[i]=ch;
}
cout<<endl;
Find(CONT);
if(m_judge==true)
{
cout<<"\n成功!"<<endl;
cout<<"总共的计算方法有多少种:"<<CONT<<endl;
}
else
{
cout<<"失败!"<<endl;
}
printf("\n再继续请输入1,退出请输入0:\n");
scanf("%d",&k);
}while(k==1);
return 0;
}