题目:http://acm.hdu.edu.cn/showproblem.php?pid=1165
递推题。。由公式可以推出一些公式。
递推m=3时我推错了。。。
后面推出来。。。
m=0时 A(m,n)=n+1;
m=1时 A(m,n)=A(0,A(1,n-1))=A(1,n-1)+1=A(1,n-2)+1+1=……=n+2;
m=2时 A(m,n)=n*2+3 ⑴
m=3时 A(m,n)=A(2,A(m,n-1)) ⑵
由⑴和⑵就 可以推出当n=3时 A(m,n)= A(m,n-1)*2+3
下面是AC代码:
#include<iostream>
using namespace std;
/*int A(int m,int n)
{
if(m==0)
return n+1;
else if(m>0&&n==0)
return A(m-1,1);
else
return A(m-1,A(m,n-1));
}*/
int f[4][1000001];
int main()
{
int m,n;
int i;
for(i=0;i<=1000000;i++)
{
f[0][i]=i+1;
f[1][i]=i+2;
f[2][i]=2*i+3; //公差是2
}
f[3][0]=5;
for(i=1;i<25;i++)
{
f[3][i]=2*f[3][i-1]+3; //公差是8
}
while(cin>>m>>n)
{
printf("%d\n",f[m][n]);
}
return 0;
}