不过灵感是来源于这篇题解中的特征值,现在才发现与一维数组模拟多维数组十分相似。
ll memo[8500];
ll f(ll a,ll b,ll c){
if(a<=0||b<=0||c<=0)return 1;
if(a>20||b>20||c>20)return f(20,20,20);
int unique=a+b*20+c*400;
if(memo[unique]==0)
if(a<b&&b<c)memo[unique]=f(a,b,c-1)+f(a,b-1,c-1)-f(a,b-1,c);
else memo[unique]=f(a-1,b,c)+f(a-1,b-1,c)+f(a-1,b,c-1)-f(a-1,b-1,c-1);
return memo[unique];
}