题目描述
给出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 }