第五届蓝桥杯 c/c++ B组7

如图【1.png】所示六角形中,填入1~12的数字。

使得每条直线上的数字之和都相同。

图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

请通过浏览器提交答案,不要填写多余的内容。

#include<iostream>
using namespace std;
int arr[15], brr[15], s=0;
void dfs(int i){
  if (i==13){
    if (arr[1]==1&&arr[2]==8&&arr[12]==3){
      if (arr[1]+arr[3]+arr[6]+arr[8]==arr[2]+arr[3]+arr[4]+arr[5]&&
      arr[1]+arr[3]+arr[6]+arr[8]==arr[1]+arr[4]+arr[7]+arr[11]&&
      arr[1]+arr[3]+arr[6]+arr[8]==arr[2]+arr[6]+arr[9]+arr[12]&&
      arr[1]+arr[3]+arr[6]+arr[8]==arr[5]+arr[7]+arr[10]+arr[12]&&
      arr[1]+arr[3]+arr[6]+arr[8]==arr[8]+arr[9]+arr[10]+arr[11]){
        cout<<arr[6];
      }   
    }
    return ;
  }
  else{
    for (int j=1; j<=12; j++){
      if (!brr[j]){
        arr[i]=j;
        brr[j]=1;
        dfs(i+1);
        brr[j]=0;
      }
    }
  }
}
int main() {
  dfs(1);
  //cout<<s;
}

  

原文地址:https://www.cnblogs.com/a863886199/p/6575978.html