您的位置:首页 > 其它

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

2013-09-21 22:53 148 查看
题目链接: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; 

}

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM DP