这题的算法是什么,全排列过不了啊
查看原帖
这题的算法是什么,全排列过不了啊
57365
樱花飞舞楼主2019/5/4 21:49
#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);
}

这题有规律吗? 是不是该用递推?

2019/5/4 21:49
加载中...