• java实现第五届蓝桥杯六角填数


    六角填数

    题目描述
    如图【1.png】所示六角形中,填入1~12的数字。
    使得每条直线上的数字之和都相同。
    图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

    请通过浏览器提交答案,不要填写多余的内容。
    在这里插入图片描述

    public class Hex_FillNum 
    {
    // 把12个格子放入数组
    static int arr[] = new int[12];
    
    // 数组标记,0为无,1为有
    static int flag[] = new int[12];
    
    // 放存每条直线的和
    static int sum[] = new int[6];
    
    public static void main(String[] args) 
    {
    //将已知的三个数赋值, 并且将这三个数进行标记,arr[5]为所求的数
    flag[0] = 1;
    arr[0] = 1;
    flag[7] = 1;
    arr[1] = 8;
    flag[2] = 1;
    arr[11] = 3;
    fun(0);
    }
    
    public static void fun(int x)
    {
    // 这个3个数为已知,直接跳过
    if(x==0 || x==1 || x==11)
    {
    fun(x+1);
    return;
    }
    
    // 格子放满,进行判断
    if(x>11)
    {
    // 每条线上的和
    sum[0] = arr[0] + arr[2] + arr[5] + arr[7];
    sum[1] = arr[0] + arr[3] + arr[6] + arr[10];
    sum[2] = arr[7] + arr[8] + arr[9] + arr[10];
    sum[3] = arr[1] + arr[5] + arr[8] + arr[11];
    sum[4] = arr[4] + arr[6] + arr[9] + arr[11];
    sum[5] = arr[1] + arr[2] + arr[3] + arr[4];
    
    // 若每条线上的和相等
    if(sum[0]==sum[1] && sum[1]==sum[2] && sum[2]==sum[3] && sum[3]==sum[4] && sum[4]==sum[5] && sum[5] == sum[0])
    System.out.println(arr[5]);
    return;
    }
    
    // 为格子赋值
    for(int i=0; i<arr.length; i++)
    {
    if(flag[i] == 0)
    {
    flag[i] = 1;
    arr[x] = i+1;
    fun(x+1);
    flag[i] = 0;
    }
    }
    }
    }
    
    
  • 相关阅读:
    Codeforces Round #370 (Div. 2) D. Memory and Scores DP
    HDU 5876 Sparse Graph BFS 最短路
    HDU 5875 Function st + 二分
    HDU 5869 Different GCD Subarray Query 离线+树状数组
    2016 ACM/ICPC Asia Regional Dalian Online HDU 5877 Weak Pair treap + dfs序
    detection in video and image
    vs 2012打开vs2013的sln
    dl in image process
    classifier
    mark
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947555.html
Copyright © 2020-2023  润新知