有 nx 1 的网格。你必须用至少 r 个红色单元格,至少 g 个绿色单元格,至少 b 个蓝色单元格给它上色。(n + r + g <= n)。如果两种模式至少在一个位置不同,则称它们不同。你可以用多少种方式给它上色。(解决方案可以是算法的或数学的)。
我的尝试:
enter code here
int func(int id, int r, int g, int b)
{
int ma = 0;
if (id == n) {
if (r > 0)
ma++;
if (g > 0)
ma++;
if (b > 0)
ma++;
return ma;
}
if (r > 0)
ma += func(r-1, g, b, id + 1);
if (g > 0)
ma += func(r, g-1, b, id + 1);
if (b > 0)
ma += func(r, g, b-1, id + 1);
if (r + g + b < n - id) {
ma += func(r, g, b, id + 1);
}
return ma;
}