蓝桥杯六角填数

    科技2022-07-14  123

    第7题:六角填数(12)

    如图所示六角形中,填入1~12的数字。 使得每条直线上的数字之和都相同。 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填写多余的内容。

    #include <iostream> #include <algorithm> #include <cmath> using namespace std; int cnt=0,n; int book[13]={0},a[13]={0}; int line[6]; void dfs(int step){ if(step==13){ line[0] = a[1] + a[3] + a[6] + a[8]; line[1] = a[1] + a[4] + a[7] + a[11]; line[2] = a[8] + a[9] + a[10] + a[11]; line[3] = a[2] + a[3] + a[4] + a[5]; line[4] = a[2] + a[6] + a[9] + a[12]; line[5] = a[5] + a[7] + a[10] + a[12]; //判断是否两两相等,只要一层循环就好了 //如果不相等,就直接return,说明这种情况不符合 for(int i = 1; i <= 5; i++) { if(line[i] != line[i - 1]) return ; } cout<<a[6]<<endl; return ; } if(step==1||step==2||step==12){ dfs(step+1); return ; } for(int i=1;i<=12;i++){ if(book[i]==0){ a[step]=i; book[i]=1; dfs(step+1); book[i]=0; } } } int main() { book[1]=1; book[3]=1; book[8]=1; a[1]=1; a[2]=8; a[12]=3; dfs(1); return 0; }
    Processed: 0.008, SQL: 8