求 f 函数
题目链接:ybt高效进阶强化训练1-1-2
题目大意
要你求 f 函数。
f(x)=f(f(x+11))[x<=100]
f(x)=x-10[x>100]
思路
不难看出有它如果是下面那个可以直接求,如果是上面那个得到的要求的 f ( ) f() f() 里面的一定比它大。
所以可以从到小 DP。
然而直接一个模拟,记忆化一下就可以了,鬼都不跟你 DP。
代码
#include<cstdio>
#include<cstring>
using namespace std;
int f[101], n;
int F(int now) {
if (now > 100) return now - 10;
if (f[now] != -1) return f[now];
return f[now] = F(F(now + 11));
}
int main() {
memset(f, -1, sizeof(f));
scanf("%d", &n);
while (n) {
printf("%d\n", F(n));
scanf("%d", &n);
}
return 0;
}