24点游戏算法
2017-06-14 16:33
295 查看
//1 2 2 10 怎么通过?????? #include<iostream> #include<string> #include<cstring> #include<algorithm> #include<fstream> #define N 4 using namespace std; int flag=0; int num ; void solveByDfs(int index,int result,int num[]) { if(result==24) { flag=1; return ; } if(result > 24 || index>=4) return ; for(int choose=0; choose<4; choose++) { switch(choose) { case 0: solveByDfs(index+1,result+num[index],num); break; case 1: solveByDfs(index+1,result-num[index],num); break; case 2: solveByDfs(index+1,result*num[index],num); break; case 3: solveByDfs(index+1,result/num[index],num); break; } if(flag) return; } } int main() { int test=0; while(cin>>num[0]>>num[1]>>num[2]>>num[3]) { flag=0; test=0; sort(num,num+4); do { solveByDfs(0,test,num); } while(next_permutation(num,num+4)); if(flag) cout<<"true"<<endl; else cout<<"false"<<endl; } return 0; } /* //以下方法在牛客上只通过90%,2 9 9 5 应输出false 但输出true #include<bits/stdc++.h> using namespace std; bool is24(char a[]) { double num[10]= {0}; num[0]=a[0]-'0'+1; int cnt=0; for(int i=1; i<7; i+=2) { if(a[i]=='+') { num[++cnt]=a[i+1]-'0'+1; } else if(a[i]=='-') { num[++cnt]=0-(a[i+1]-'0'+1); } else if(a[i]=='*') { num[cnt]*=a[i+1]-'0'+1; } else if(a[i]=='/') { num[cnt]/=a[i+1]-'0'+1; } } double sum=0; for(int i=0; i<=cnt; i++) sum+=num[i]; if(sum<=24+0.0000001&&sum>=24-0.0000001)return true; return false; } int main() { int n[4]; while(cin>>n[0]>>n[1]>>n[2]>>n[3]) { char a[7]; int flag=1; char op[4]= {'+','-','*','/'}; for(int i1=0; i1<4&&flag; i1++) for(int i2=0; i2<4&&flag; i2++) for(int i3=0; i3<4&&flag; i3++) for(int i4=0; i4<4&&flag; i4++) //if(i1!=i2&&i1!=i3&&i1!=i4&&i2!=i3&&i2!=i4&&i3!=i4) { for(int k1=0; k1<4&&flag; k1++) for(int k2=0; k2<4&&flag; k2++) for(int k3=0; k3<4&&flag; k3++) { a[0]=n[i1]-1+'0',a[2]=n[i2]-1+'0',a[4]=n[i3]-1+'0',a[6]=n[i4]-1+'0'; a[1]=op[k1],a[3]=op[k2],a[5]=op[k3]; if(is24(a)) { cout<<"true"<<endl; flag=0; break; } } } if(flag==1)cout<<"false"<<endl; } return 0; } */
相关文章推荐
- 华为OJ24点游戏算法
- [华为OJ--C++]097-24点游戏算法
- 24点游戏算法及实现(后缀表达式思想)
- 24点游戏算法思想与结果演示
- C++实现24点游戏算法
- 24点游戏及其算法
- 数据结构和算法设计专题之---24点游戏(穷举法和递归法)
- 24点游戏及其算法
- 24点游戏算法
- 基于递归全排算法的最笨方式实现24点游戏
- 判断四张扑克牌能否凑成24点游戏算法
- 计算24点游戏精化算法剖析
- 相当棒的24点游戏算法,Javascript写的,不懂,谁能翻译成C/C++?
- 24点游戏及其算法
- 24点游戏算法
- 24点游戏算法-华为OJ
- 24点游戏算法-华为OJ
- 24点游戏分析和基本算法
- C#实现的算24点游戏算法实例分析
- 24点游戏算法