算法标签:全排列,连通性,图论
题目描述:
如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
思路
首先我们有一个3X4的方块,每个方块都有一个数字,我们要检测所有可能排列下的合适的剪法。
1.必须是连通的,所以我们直接可以考虑连通性
2.我们要找所有的状态,直接往全排列上走
3.每种状态都只有5个可剪,也就是说我们可以直接赋值12个中有5个可以用
4.我们考虑几个连通块,如果只有一个,那就成功,如果是一个以上或者没有,那就说明错了
5.可得简单模型
a[]={1,1,1,1,1,0,0,0,0,0,0,0};do( dfs() if(num==1) ans++; ){next_permutation(a,a+12)};
题目代码