Function Run Fun--POJ 1579

1、题目类型:模拟、数论。

2、解题思路:水题。

3、注意事项:dp[a][b][c]记录状态即可。

4、实现方法:

#include<iostream>
using namespace std;

int dp[21][21][21];

int w(int a,int b,int c)
{
if(a <= 0 ||b <= 0 || c <= 0)
{
return 1;
}
else if(a>20||b>20||c>20)
{
a
=20,b=20,c=20;
if(dp[a][b][c])
return dp[a][b][c];
return dp[a][b][c]=w(a,b,c);
}
else if( a < b && b < c)
{
if(dp[a][b][c])
return dp[a][b][c];
else
return dp[a][b][c]=w(a,b,c-1) + w(a,b-1,c-1) - w(a,b-1,c);
}
else
{
if(dp[a][b][c])
return dp[a][b][c];
else
return dp[a][b][c]=w(a-1,b,c) + w(a-1,b-1,c) + w(a-1,b,c-1) - w(a-1,b-1, c-1);
}
}

int main()
{
int a,b,c;
while(cin>>a>>b>>c)
{
if(a==-1&&b==-1&&c==-1)
break;
cout
<<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<endl;;
}
return 0;
}

 

posted @ 2010-08-17 20:55  勇泽  阅读(248)  评论(0编辑  收藏  举报