正题
大意
有t种配料,有n种限制。限制就是几种配料不能同时使用(可能有多种)。求方案数
解题思路
暴力搜索能过
代码
#include<cstdio>
using namespace std;
int n,t,k[53],a[53][21],v[21],s;
bool flag;
void dfs(int dep,int x)
{for (int i=1;i<=n;i++){flag=true;for (int j=1;j<=k[i];j++){if (!v[a[i][j]]){flag=false;break;}}if (flag) return;}s++;//for (int i=1;i<=t;i++)// if (v[i]) printf("%d ",i);//printf("\n");if(dep==t) return;for (int i=x+1;i<=t;i++){if (!v[i]){v[i]=true;dfs(dep+1,i);v[i]=false;}}
}
int main()
{scanf("%d%d",&t,&n);for (int i=1;i<=n;i++){scanf("%d",&k[i]);for (int j=1;j<=k[i];j++){scanf("%d",&a[i][j]);}}dfs(0,0);printf("%d",s);
}