標題:五星填數
如【圖1.png】的五星圖案節點填上數字:1~12,除去7和11。
要求每條直線上數字和相等。
如圖就是恰當的填法。
請你利用計算機搜索所有可能的填法有多少種。
注意:旋轉或鏡像後相同的算同一種填法。
請提交表示方案數目的整數,不要填寫任何其它內容。
#include<stdio.h>
int map[11]={0};
int visit[11]={0};
int sum=0;
void dfs(int n)
{
int i;
if(n==11)
{
int a,b,c,d,e;
a=map[2]+map[3]+map[4]+map[5];
b=map[1]+map[3]+map[6]+map[9];
c=map[2]+map[6]+map[8]+map[10];
d=map[1]+map[4]+map[7]+map[10];
e=map[5]+map[7]+map[8]+map[9];
if(a==b&&b==c&&c==d&&d==e)
{
sum++;
}
return;
}
for(i=1;i<13;i++)
{
if(i!=7&&i!=11&&!visit[i])
{
visit[i]=1;
map[n]=i;
dfs(n+1);
visit[i]=0;
}
}
}
int main()
{
dfs(1);
printf("%d\n",sum);
return 0;
}