zoukankan      html  css  js  c++  java
  • 蓝桥杯 2014本科C++ B组 六角填数 枚举排列

    标题:六角填数

       

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

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

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

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

    简单的枚举排列,只要提前将12个结点标号,来判断六个线段总和是否相等。

    答案是 10       (num[7]这是我标定的序号)

    代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define MAXN 13
     5 int num[MAXN];
     6 int used[MAXN];
     7 bool flag=false;
     8 using namespace std;
     9 void dfs(int cur)
    10 {
    11     int i,j;
    12     bool ok;
    13     if(cur==13)
    14     {
    15         if(num[1]+num[4]+num[7]+num[9]==num[2]+num[4]+num[5]+num[6]&&num[2]+num[4]+num[5]+num[6]==num[1]+num[5]+num[8]+num[12]&&num[1]+num[5]+num[8]+num[12]==num[6]+num[8]+num[11]+num[3]&&num[6]+num[8]+num[11]+num[3]==num[2]+num[7]+num[10]+num[3]&&num[2]+num[7]+num[10]+num[3]==num[9]+num[10]+num[11]+num[12])
    16         {
    17             for(i=1;i<=12;i++)
    18             cout<<num[i]<<endl;
    19             flag=true;
    20         }    
    21     }
    22     for(i=1;i<=12;i++)
    23     {
    24         ok=true;
    25         for(j=1;j<=cur-1;j++)
    26         {
    27             if(used[i]||num[j]==i)
    28                 ok=false;
    29         }
    30         if(ok)
    31         {
    32             num[cur]=i;
    33             used[i]=1;
    34             dfs(cur+1);
    35         }
    36         if(flag)
    37             return;
    38         used[i]=0;
    39     }
    40 } 
    41 int main()
    42 {
    43     memset(used,0,sizeof(used));
    44     used[1]=1;
    45     used[3]=1;
    46     used[8]=1;
    47     num[1]=1;
    48     num[2]=8;
    49     num[3]=3;
    50     dfs(4);
    51     return 0;
    52 }
  • 相关阅读:
    mysql 取年、月、日、时间
    第4步:创建RAC共享磁盘组
    第3步:添加用户与安装路径
    第2步:配置系统安装环境
    第1步:安装虚拟机+配置网络
    nodejs rar/zip加密压缩、解压缩
    使用shell脚本守护node进程
    抒发一下这些天用django做web项目的一些体会
    编写gulpfile.js文件:压缩合并css、js
    在NodeJS中使用流程控制工具Async
  • 原文地址:https://www.cnblogs.com/fancy-itlife/p/4299058.html
Copyright © 2011-2022 走看看