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

📄 24dian.cpp

📁 二十四点智力游戏的源代码
💻 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 + -