24点的游戏

题目描述
给出4个正整数操作数,你的任务是使用运算符(+,-,*,/)和括号对
操作数进行计算,分析是否能得到24,每个操作数只能使用1次,运算符和
括号可以多次使用,注意所有的中间结果都是整数。
输入
输入包括多行,每行4个正整数,范围是[1,13],输入以0 0 0 0标记结束
输出
若输入的4个操作数能计算出24,输出Yes,否则输出No
样例输入
1 1 1 1
2 5 7 8
0 0 0 0
样例输出
No
Yes

代码如下:

 1 #include<iostream>
 2 using namespace std;
 3 int a[4];
 4 bool Fun(int n)
 5 {
 6     if(n==1)
 7         return a[0]==24;
 8     for(int i=0;i<n;i++)
 9     {
10         for(int j=0;j<n;j++)
11         {
12             if(i==j) continue;
13             int a1=a[i],a2=a[j];
14             a[i]=a1+a2;
15             a[j]=a[n-1];
16             if(Fun(n-1)) return true;
17             a[i]=a1-a2;
18             a[j]=a[n-1];
19             if(Fun(n-1)) return true;
20             a[i]=a1*a2;
21             a[j]=a[n-1];
22             if(Fun(n-1)) return true;
23             if(a2!=0&&a1%a2==0)
24             {
25                 a[i]=a1/a2;
26                 a[j]=a[n-1];
27                 if(Fun(n-1)) return true;
28             }
29             a[i]=a1;
30             a[j]=a2;
31         }
32     }
33     return false;
34 }
35 int main()
36 {
37     while(1)
38     {
39         cin>>a[0]>>a[1]>>a[2]>>a[3];
40         if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0) break;
41         if(Fun(4))
42             cout<<"Yes"<<endl;
43         else cout<<"No"<<endl; 
44     }
45 } 
原文地址:https://www.cnblogs.com/baigg1995/p/4583364.html