UVA10344五个数从前往后进行加减乘运算能否得到23
2015-09-25 17:15
453 查看
这个题刚开始想着是加减运算,就想着去开个stack,然后进行递归调用,然后发现用stack做函数参数好像并不能得到正确的
答案,然后就想了其他办法,就是把每次运算的结果作为第一个参数,把要用的下一个运算数在数组a中的下标作为另外一个参数,
当第二个参数为6时,即运算完毕,然后判断是否为23就行了。
答案,然后就想了其他办法,就是把每次运算的结果作为第一个参数,把要用的下一个运算数在数组a中的下标作为另外一个参数,
当第二个参数为6时,即运算完毕,然后判断是否为23就行了。
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<string> #include<algorithm> #include<map> #include<set> #include<vector> #include<stack> #include<queue> #include<climits> #define LL long long using namespace std; int a[6]; bool dfs(int x,int cur) { if(cur==6) { if(x==23) return 1; return 0; } if(dfs(x-a[cur],cur+1)) return 1; if(dfs(x+a[cur],cur+1)) return 1; if(dfs(x*a[cur],cur+1)) return 1; return 0; } int main() { while(cin>>a[0]) { cin>>a[1]>>a[2]>>a[3]>>a[4]; if(!a[0]&&!a[1]&&!a[2]&&!a[3]&&!a[4]) break; a[5]=0; sort(a,a+5); int flag=0; stack<int> s; do { if(dfs(a[0],1)) { flag=1; break; } }while(next_permutation(a,a+5)); if(flag) cout<<"Possible"<<endl; else cout<<"Impossible"<<endl; } return 0; }
相关文章推荐
- 警惕 Xcode 木马
- ZWrite Off 和 ZTest Always
- iOS的KVO底层实现原理
- 请问view controller scene,该如何删除
- Android源代码单个模块编译
- 获取当前星期几
- C# 将短时间格式变长正常时间格式
- 最大生成树POJ2263Heavy Cargo解题报告
- IOS 大众点评 搜索界面实现
- hadoop-2.2.0 vm 安装
- 黑马程序员-面向对象的三个基本特征之封装
- 卷积神经网络代码简单备注
- log4j配置
- Oracle EBS 用户配置文件
- 《大道至简》第二章 读后感
- 集合的全排列问题
- 自定义样式及带数字ProgressBar
- Ribbon For WPF
- Ribbon For WPF
- MAC 下反编译 APK