POJ 1579 Function Run Fun
来源:互联网 发布:首届全球程序员节 编辑:程序博客网 时间:2024/06/10 10:59
题目大意:这道题要求题目上给的很明确也就没有什么多说的了。
解题思路:这道题是一道dp入门题,要用的记忆化搜索来做,不然很容易超时的。把计算出来的值记录上来,免得后面算过的值继续再算,这样超时是必然的。当然可以用递归来做,只是有个地方要优化下。
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <map>#include <cmath>#include <queue>using namespace std;int dp[20][20][20];int dps(int a,int b,int c){ if(a<=0||b<=0||c<=0) return 1; if(a>20||b>20||c>20) return dps(20,20,20); if(dp[a][b][c]!=0)//若dp数组当前值不为0 说明存在值 直接返回即可 这个不写上必然会超时的 return dp[a][b][c]; if(a<b&&b<c) dp[a][b][c]=dps(a,b,c-1)+dps(a,b-1,c-1)-dps(a,b-1,c); else dp[a][b][c]=dps(a-1,b,c)+dps(a-1,b-1,c)+dps(a-1,b,c-1)-dps(a-1,b-1,c-1); return dp[a][b][c];}int main(){ int a,b,c; while(~scanf("%d %d %d",&a,&b,&c)) { memset(dp,0,sizeof(dp));//初始化dp数组 if(a==-1&&b==-1&&c==-1) break; printf("w(%d, %d, %d) = %d\n",a,b,c,dps(a,b,c)); } return 0;}
END!!!!!!!!!!!!!!!!!!!
1 0
- POJ 1579 Function Run Fun
- poj 1579 Function Run Fun
- poj 1579 Function Run Fun
- poj 1579 Function Run Fun
- POJ 1579 Function Run Fun
- poj 1579 Function Run Fun
- poj 1579 Function Run Fun
- Poj 1579 Function Run Fun
- poj 1579 Function Run Fun
- POJ 1579 Function Run Fun
- poj 1579 Function Run Fun
- POJ-1579-Function Run Fun
- poj 1579 Function Run Fun
- poj-1579 Function Run Fun
- POJ-1579-Function Run Fun
- poj-1579-Function Run Fun
- poj 1579 function run fun
- poj 1579 Function Run Fun
- hdu5793——A Boring Question(快速幂+逆元)
- 求一个集合的所有子集问题
- 条款七:千万不要重载&&,||和,操作符
- 从零开始学习Gradle之一---初识Gradle
- Mob短信验证
- POJ 1579 Function Run Fun
- 小学数学学习笔之-总结
- content = "IE=edge,chrome=1" 详解
- 多浏览器兼容性测试整体解决方案 F2etest
- C++ sqlite数据库增删改查(基于sqlite3)
- HDU4462 Scaring the Birds
- 海哥说的未来趋势、我最近遇到的问题
- 图片比较工具这几款比较好
- php自带加密解密函数