您的位置:首页 > 其它

POJ1579 HDOJ1579 Function Run Fun

2009-02-26 10:41 363 查看
Pku 1579 Function Run Fun http://acm.pku.edu.cn/JudgeOnline/problem?id=1579

Hdu 1579 Function Run Fun http://acm.hdu.edu.cn/showproblem.php?pid=1579

开了一个三维数组,从w(0,0,0)开始递推,逐步产生到w(20,20,20)的值,复杂度O(n^3).

#include<iostream>
using namespace std;
int e[21][21][21];            //-------重要
int fun(int a,int b,int c)
{
if(a<=0||b<=0||c<=0)    return 1;
if(a>20||b>20||c>20)
{
return fun(20,20,20);
}
if(a<b&&b<c)
{
if(e[a][b][c])        return e[a][b][c];
else
e[a][b][c]=fun(a,b,c-1)+fun(a,b-1,c-1)-fun(a,b-1,c);
}
else
{
if(e[a][b][c])        return e[a][b][c];
else
e[a][b][c]=fun(a-1,b,c)+fun(a-1,b-1,c)+fun(a-1,b,c-1)-fun(a-1,b-1,c-1);
}
return e[a][b][c];
}
int main()
{
int a,b,c;
memset(e,0,sizeof(e));
while(cin>>a>>b>>c)
{
if(a==-1 && b==-1 && c==-1)
break;
//w(1, 1, 1) = 2
cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<fun(a,b,c)<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: