求牛人给我讲解下递归函数如何将函数值存到数组中 用c语言 例如北大ACM...
发布网友
发布时间:2024-05-28 14:08
我来回答
共2个回答
热心网友
时间:2024-06-07 02:32
又是你....
首先你和1008一样又想先把数据存起来,再一起处理了....这个思路不对,应该是这样的:
while(数据没结束){
初始化变量;
读入数据;
处理数据;
输出结果;
}
再说这个题,这个题我觉得你想问的是记忆化递归要如何记忆。
这题我没做,看下觉得要么是记忆化递归,要么是推导公式。首先你要理解正常的递归做这个题要如何做。你现在的做法正是一般的递归做法。加入记忆化是这样:
int dp[21][21][21];
int w(int a,int b,int c)
{
if(dp[a][b][c])return dp[a][b][c];
if(a<=0||b<=0||c<=0)
return 1;
if (a>20||b>20||c>20)
return w(20,20,20);
if (a < b && b < c)
return dp[a][b][c]=w(a,b,c-1) + w(a,b-1,c-1) - w(a,b-1,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) ;
}
即每次做完一个结果就把这个结果记录到对应的dp[a][b][c]中,这道题只要a,b,c相同结果就相同
然后在每次左前检查这个a,b,c对应的结果算过没有,算过直接读,没算再去算
热心网友
时间:2024-06-07 02:36
你的意思你的main里面实现的功能应该是把w的函数值存到数组里面,但是你又不知道该采取何种方式存贮?
如果是这样的话,那就建立一个int类型的三维数组,数组的下标分别对应w函数中的参数,而数组的值就是函数值。