UVA10344五个数从前往后进行加减乘运算能否得到23
来源:互联网 发布:马扎克加工中心编程 编辑:程序博客网 时间:2024/05/29 16:51
这个题刚开始想着是加减运算,就想着去开个stack,然后进行递归调用,然后发现用stack做函数参数好像并不能得到正确的
答案,然后就想了其他办法,就是把每次运算的结果作为第一个参数,把要用的下一个运算数在数组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 longusing 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;}
0 0
- UVA10344五个数从前往后进行加减乘运算能否得到23
- 多项式加减乘运算
- 高精度加减乘运算
- 运算符(加减乘)
- 五个整数任意组合(加减)得到1~122之间的数
- 五个整数任意组合(加减)得到1~122之间的数
- 大数运算:支持加减乘运算
- C语言实现用位移运算符进行加减乘…
- 使用5,7,12做加减运算,如果用最少步数得到任意数n
- 单链表模拟一元多项式加减乘运算
- 大整数的加减乘运算
- 无限长整数(加减乘运算)
- 一元多项式的加减乘运算
- 一元多项式的加减乘运算
- 两个数乘运算
- 浮点数加减乘方法封装~
- hdoj 5505 GT and numbers 【判断一个数 能否通过累乘因子得到另一个数】【好题】
- 将日期进行加减运算
- 构造函数不能为虚函数,析构函数可为虚函数
- C# .net设置系统音量
- 安卓学习之路之广播
- maven导出项目依赖的jar包
- 安装ssh登陆其它机器
- UVA10344五个数从前往后进行加减乘运算能否得到23
- 类型强制转换的理解
- 安装windows版node.js
- 绝对的好东西
- android 系统重启关机 方法 非常好的一篇文章
- IOS 大众点评 首页界面 仿真实现
- 一篇五年码农的非结构化文章
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十节:人物简单阴影
- 2.1链式栈