📄 24dian.cpp
字号:
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
double num[4];
string str[4];
int ans;
void solve(int n)
{
int i,j;
double a,b;
string sa,sb;
if(n==1){
if(fabs(num[0]-24.0)<0.01){
ans++;
cout<<str[0]<<endl;
return;
}
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
a=num[i];
b=num[j];
num[j]=num[n-1];
sa=str[i];
sb=str[j];
str[j]=str[n-1];
num[i]=a+b;
str[i]="("+sa+"+"+sb+")";
solve(n-1);
num[i]=a-b;
str[i]="("+sa+"-"+sb+")";
solve(n-1);
num[i]=b-a;
str[i]="("+sb+"-"+sa+")";
solve(n-1);
num[i]=a*b;
str[i]="("+sa+"*"+sb+")";
solve(n-1);
if(b!=0)
{
num[i]=a/b;
str[i]="("+sa+"/"+sb+")";
solve(n-1);
}
if(a!=0)
{
num[i]=b/a;
str[i]="("+sb+"/"+sa+")";
solve(n-1);
}
num[i]=a;
num[j]=b;
str[i]=sa;
str[j]=sb;
}
}
}
int main()
{
int i;
char temp[3];
while(1){
cout<<"输入四个1-13范围内的整数:"<<endl;
for(i=0;i<4;i++){
scanf("%s",temp);
sscanf(temp,"%lf",&num[i]);
str[i]=temp;
}
ans=0;
solve(4);
if(ans>0)
cout<<"总共有"<<ans<<"组解."<<endl;
else
cout<<"输入的四个数不可通过四则运算得出24"<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -