只按长度无法判断下一位能否放红色,因此分成两个状态:red 表示以红色结尾的方案数,blue 表示以蓝色结尾的方案数。转移为 newRed=blue*r,newBlue=(red+blue)*b,初值为 red=r, blue=b。每次只依赖上一层,使用四个滚动变量。时间复杂度 O(n)O(n)O(n),空间复杂度 O(1)O(1)O(1)。乘法前后使用 long long 并及时取模。
red
blue
newRed=blue*r
newBlue=(red+blue)*b
red=r, blue=b
long long
使用您的 星源智一OJ 通用账户