我AC了,就整个长度n的列表,每位记录以当前位为end的白魔法和黑魔法数。假设list[n] = [white,black],那我们读到n+1位的时候,如果是正数,那黑魔法的方案数会多list[n][1]种,白魔法的方案数会多list[n][0]+1种(因为会多只有第n+1本身的这种情况),是负数的话反过来,遍历一次以后把列表每个元素的[0]和[1]相加输出就ok啦,dp问题