有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
public class _javaB07 {
private static int mp[] = {1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14};
private static int aa[] = new int[5];
private static int vis[] = new int[5];
private static int sum = 0;
private static int b[] = {-1, 1, -5, +5};
public static void main(String[] args) {
for (int a = 0; a < 12; a++)
for (int b = a + 1; b < 12; b++)
for (int c = b + 1; c < 12; c++)
for (int d = c + 1; d < 12; d++)
for (int e = d + 1; e < 12; e++) {
aa[0] = mp[a];
aa[1] = mp[b];
aa[2] = mp[c];
aa[3] = mp[d];
aa[4] = mp[e];
for (int i = 0; i < 5; i++) {
vis[i] = 0;
}
vis[0] = 1;
dfs(0);
int flag = 1;
for (int i = 0; i < 5; i++) {
if (vis[i] != 1) {
flag = 0;
break;
}
}
if (flag == 0) continue;
else{
sum++;
}
}
System.out.println(sum);
}
public static void dfs(int n) {
for (int i = 0; i < 4; i++) {
int t = aa[n] + b[i];
if (t < 1 || t > 14 || t == 5 || t == 10) continue;
for (int j = 0; j < 5; j++)
if (!(vis[j] == 1) && aa[j] == t) {
vis[j] = 1;
dfs(j);
}
}
}
}
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:116