ZROI2017 做题笔记
Posted jhqqwq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZROI2017 做题笔记相关的知识,希望对你有一定的参考价值。
递归函数的写法应该是:
int f(int n) if (n <= 2) return 1; return f(n - 1) + f(n - 2);
改成非递归的手工栈需要储存函数参数、时间戳和答案,比较恶心但也的确是 C++ 递归函数内部代码的形式。
const int N = 1e6 + 10; int s[N][3]; int f(int n) int head = 1; s[1][0] = n, s[1][1] = s[1][2] = 0; while (head) if (!s[head][1]) if (s[head][0] <= 2) s[head--][2] = 1; else s[head][1] = 1, ++head, s[head][0] = s[head - 1][0] - 1, s[head][1] = s[head][2] = 0; else if (s[head][1] & 1) s[head][1] = 2, s[head][2] += s[head + 1][2]; ++head, s[head][0] = s[head - 1][0] - 2, s[head][1] = s[head][2] = 0; else s[head][2] += s[head + 1][2], --head; return s[1][2];
To be continued...
以上是关于ZROI2017 做题笔记的主要内容,如果未能解决你的问题,请参考以下文章