比赛 HAOI2009 模拟试题2 评测结果 AAAATTTTTT
题目名称 着色方案 最终得分 40
用户昵称 BYVoid 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2009-04-22 09:21:50
显示代码纯文本
/* 
 * Problem: HAOI2009模拟2 color
 * Author: Guo Jiabao
 * Time: 2009.4.22 9:09
 * State: Done
 * Memo: 搜索
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
const int MAXK=16,MAXN=101;
using namespace std;
int K,N,C[MAXK],Ans;
int U[MAXN];
void init()
{
	int i;
	freopen("color.in","r",stdin);
	freopen("color.out","w",stdout);
	scanf("%d",&K);
	for (i=1;i<=K;i++)
	{
		scanf("%d",&C[i]);
		N+=C[i];
	}
}
void dfs(int k)
{
	int i;
	if (k>N)
	{
		Ans++;
		return;
	}
	for (i=1;i<=K;i++)
	{
		if (C[i]>0 && i!=U[k-1])
		{
			C[i]--;
			U[k]=i;
			dfs(k+1);
			C[i]++;
		}
	}
}
int main()
{
	init();
	dfs(1);
	printf("%d\n",Ans);
	return 0;
}