現在你要從中剪下5張來,要求必須是連着的。
(僅僅連接一個角不算相連)
比如,【圖2.jpg】,【圖3.jpg】中,粉紅色所示部分就是合格的剪取。
請你計算,一共有多少種不同的剪取方法。
請填寫表示方案數目的整數。
注意:你提交的應該是一個整數,不要填寫任何多餘的內容或說明性文字。
116
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int mp[12]= {1,2,3,4,6,7,8,9,11,12,13,14};
int aa[5];
bool vis[5];
int sum=0;
int bu[4]= {-1,1,-5,+5};
bool f;
void dfs(int x) {
for (int i=0;i<4;i++) {
int xx=aa[x]+bu[i];
if(xx<1 || xx>14 || xx==5 || xx==10) continue;
for (int j=0;j<5;j++) {
if (!vis[j] && aa[j]==xx) {
vis[j]=true;
dfs(j);
}
}
}
return;
}
int main()
{
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];
memset(vis,false,sizeof(vis));
vis[0]=true;
dfs(0);
f=true;
for (int i=0;i<5;i++) {
if (!vis[i]) {
f=false;
break;
}
}
if (!f) continue;
else
sum++;
}
}
}
}
}
printf ("%d\n",sum);
return 0;
}