HUST——1110雪碧(简单DFS)
来源:互联网 发布:淘宝食品流通许可证 编辑:程序博客网 时间:2024/06/05 15:16
1110: 雪碧
时间限制: 1 Sec 内存限制: 128 MB提交: 18 解决: 6
题目描述
杨神最近特别喜雪碧,他现在有两瓶,他大晚上的在街上走,他逢店加一倍(雪碧),逢摊吃大虾并喝一瓶(雪碧)。这一路走过去,遇到店n次,大排档m次,已知最后1次是小摊,大伙正好把雪碧喝完。请你计算杨神遇到店和小摊的次序,合理的次序一共有多少种?
输入
多组测试数据,每组输入2个整数n和m(均不大于10)
输出
对于每组测试数据输出一行,值为符合条件的次序数.
样例输入
1 3
样例输出
1
显然题意可以转换成给你初始值x=2,给你n次将当前值乘2的机会和m次将当前值减1的机会,最后两者刚好用完且此时x=0的方案数有多少种。比赛刚开始以为是DP(DP恐惧症),后来发现应该是DFS,而且数据范围很小,暴力没问题。然后想着用三个参数来表示当前状态:(当前瓶子数,当前乘2的可用次数,当前减1的可用次数)。
写完后样例可以过了,但是题目中说了最后一次是小摊,即在此之前不可以把瓶子变为0。
然后重新加了个边界条件过了
代码:
#include<iostream>#include<algorithm>#include<cstdlib>#include<sstream>#include<cstring>#include<cstdio>#include<string>#include<deque>#include<stack>#include<cmath>#include<queue>#include<set>#include<map>using namespace std;typedef long long LL;#define INF 0x3f3f3f3fint ans=0;void dfs(int ping,int nn,int mm){ if(nn<0||mm<0||ping<0||(ping<=0&&nn>=1))//最后这个条件不能少,若乘2的机会还有但瓶子为0也算非法 return ; if(ping==0&&nn==0&&mm==0) { ans++; return; } else { dfs(ping*2,nn-1,mm); dfs(ping-1,nn,mm-1); }}int main(void){ int n,m,i,j; while (~scanf("%d%d",&n,&m)) { ans=0; dfs(2,n,m); cout<<ans<<endl; } return 0;}
0 0
- HUST——1110雪碧(简单DFS)
- Hust oj 1143 泉水(dfs)
- Hust oj 1708 许可证(dfs)
- hust 1422【DFS】
- hust 1425【DFS】
- CSS Sprite——雪碧图
- Web优化之雪碧图—动态生成雪碧图 读凡客产品页所想
- HUST——1103Party(拓扑排序+个人见解)
- POJ2488——简单DFS
- 雪碧
- Hust oj 1184 早起一水(简单贪心)
- Hust oj 1279 切蛋糕(简单数学)
- Hust oj 1632 最大的最小公倍数(简单数学)
- CSS3动画——雪碧图的实现
- HUST——A - EXTENDED LIGHTS OUT
- 【DFS】(一)最简单的递归dfs——水坑问题(poj2386)
- HUST 1600 由4,8组成的数且能整除48 (dfs枚举)
- poj 1321 — 棋盘问题(简单DFS)
- Java-线程
- python tile
- s5pv210 datasheet_system_memory
- 2016年团体程序设计天梯赛-模拟赛
- 【Scala】响应式编程思想
- HUST——1110雪碧(简单DFS)
- 计数排序
- 利用随机数随机生成指定位数的字符串
- mongodb增删改查基本操作
- 高精度除法(高精除以低精)——一步一步算法篇
- ==和equals方法及其区别
- android开发人员获取sqlite
- 如何优雅的写作与分享技术?-Markdown 语法简要
- POJ 2229 DP