题目描述
一个有趣的圆环套圆环函数被定义如下:
G(n)=n-G(G(n-1)) (n是正整数)
G(0)=0
请你计算出圆环函数的值。
输入
一个非负整数n,n<=200。
输出
一个正整数,即G(n)。
样例输入
3
样例输出
2
提示
事实上,如果不用记忆化的话......
#include <iostream>
#define SIZE 2001
using namespace std;
int res[SIZE];
bool visited[SIZE];
int g(int x)
{
if (!x)
{
return 0;
}
if (visited[x]) // 记忆化搜索,比不加好很多.
{
return res[x];
}
visited[x] = true;
return res[x] = x - g(g(x - 1));
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%d", g(n));
return 0;
}