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

📄 24.cpp

📁 快算24 一副牌
💻 CPP
字号:
#include<iostream>
#include<math.h>
using namespace std;

//设置全局变量和常量
double number[4]; 
const double PRECISION = 1E-6;  

//递归计算24
bool calculate(int n)
{
    //end
    if(n==1)
	{
        if		(fabs(number[0]-24) < PRECISION)    return true;
        else    return false;
    }

    //递归过程
    for(int i = 0; i < n; i++)
	{
        for(int j = i+1; j < n;j++)
		{
            double a,b;

            a=number[i];
            b=number[j];
            number[j]=number[n-1];

            number[i]=a+b;
            if(calculate(n-1))
                return true;
            
            //减号有两种情况,a-b与b-a
            number[i]=a-b;
            if(calculate(n-1))
                return true;

            number[i]=b-a;
            if(calculate(n-1))
                return true;

            number[i]=a*b;
            if(calculate(n-1))
                return true;

            //除法也有两种情况,a/b与b/a
            if(b!=0){
                number[i]=a/b;
                if(calculate(n-1))
                    return true;
            }
            
            if(a!=0){
                number[i]=b/a;
                if(calculate(n-1))
                    return true;
            }

            //恢复数组
            number[i]=a;
            number[j]=b;
        }
    }
    return false;
}

int main(){
	int i, x;

	i = 0;
	while (scanf("%d", &x)!=EOF){
		if(i < 4){
			number[i] = x;
			i++;
		}	//保存输入的数据到number

		if ( i == 4 ){
			if(calculate(4))
				cout << "yes" << endl;
			else
				cout << "no" << endl;
			i = 0;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -