toj1626 Function Run Fun 欢迎留言求指教 DP理解不透彻。。

题目链接:http://acm.tju.edu.cn/toj/showp1626.html

题目大意:给定一串关系 求表达式的值

思路:试了 直接递归会超时 所以DP 动态规划把前面计算出来的结果存起来??

代码:

#include<iostream>
#include <cstring>
using namespace std;
#define M 101
int ww[M][M][M];  这个辅助数组很有用

long long  w(int x,int y,int z)   //求指教???
{
if(x<=0||y<=0||z<=0) return 1;
if(ww[x][y][z]) return ww[x][y][z];
if(x>20||y>20||z>20) {ww[x][y][z]=w(20,20,20); return ww[x][y][z];}
if(x<y&&y<z) {ww[x][y][z]=w(x,y,z-1)+w(x,y-1,z-1)-w(x,y-1,z);return ww[x][y][z];}
ww[x][y][z]=w(x-1,y,z)+w(x-1,y-1,z)+w(x-1,y,z-1)-w(x-1,y-1,z-1);
return ww[x][y][z];
}

int main()
{
int a,b,c,i,j,k;
while(cin>>a>>b>>c)

if(a==-1&&b==-1&&c==-1) break;
memset(ww,0,sizeof(ww));
//printf("w(%d, %d, %d) = %lld\n",a,b,c,w(a,b,c));
cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<endl;
}
return 0; 
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值