FZU 1042 Ackermann Function


Ackermann Function
Time Limit:1s
Memory limit:32M
Accepted Submit:332
Total Submit:931
As is known, Ackermann function plays an important role in the sphere of theoretical computer science. However, in the other hand, the dramatic fast increasing pace of the function caused the value of Ackermann function hard to calcuate.Ackermann function can be defined recursively as follows: Given m and n, your task is to compute the value of A(m,n) Input Each line of the input will have a two integers, namely m, n, where 0 < m <= 3. Note that when m<3, n can be any integer less than 1000000, while m=3, the value of n is restricted within 24. Input is terminated by end of file. Output For each value of m,n, print out the value of A(m,n). Sample Input
1 3
2 4
Sample Output
5
11
Original: chenyan
문제 풀기:
공식으로 미루려면 m가 비교적 작은 값을 얻는 전제에서 공식을 뒤집는 것이 비교적 좋다.
m=1,n=0--->2m=1,n=1--->3m=1,n=2--->4m=1,n=3--->5m=1------->2+n
 
m=2,n=0--->3m=2,n=1--->5m=2,n=2--->7m=2,n=3--->9m=2------->2*n+3
 
m=3은 변경할 수 있습니다.
#include using namespace std; int Ackermann(int m,int n) { if (m==1) { return 2+n; } else if (m==2) { return 3+2*n; } else if (m==3) { if(n>0) return Ackermann(2,Ackermann(m,n-1)); else if (n==0) { return Ackermann(2,1); } } return 0; } int main() { int m,n; while (cin>>m>>n) { cout<

좋은 웹페이지 즐겨찾기