#include<cstdio>
int v[5050];
int c[5050], n, a[5],ans;
void dfs(int k=1)
{
if (k == n + 1)
{
ans++;
return;
}
for (int i = 1; i <= 4; i++)
if(v[i]<a[i])
{
if (k >= 4)
{
if (i == 4 && c[k - 1] == 3 && c[k - 2] == 2&&c[k-3]==1)
continue;
}
c[k] = i;
v[i]++;
dfs(k + 1);
v[i]--;
c[k] = 0;
}
}
int main()
{
scanf("%d %d %d %d %d", &n, &a[1], &a[2], &a[3], &a[4]);
dfs();
printf("%d", ans);
}
这题有规律吗?
是不是该用递推?