标题:六角填数问题的思路
只看楼主
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
结帖率:86%
已结贴  问题点数:20 回复次数:4 
六角填数问题的思路
如图所示六角形中,填入1~12的数字。
    使得每条直线上的数字之和都相同。
    图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
这道题刚拿到手我觉得很像数独游戏,就是将1至12个数字依次填入格子内,由于题目已经给出了3个,所以只需将9个数字填入9个空格内,共有9!钟方案,但又要满足每条直线上的数字之和都相同,有点不知所措,请各位大神指点一二。
搜索更多相关主题的帖子: 如图所示 格子 游戏 
2016-03-11 02:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
从图中可以看出,每个圆都参与了两个线,所以每根线的和是 2*(1+……+12)/6 = 26
知道每根线的和是26了,好像还是要写代码^_^
2016-03-11 09:56
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:5 
网上有很多解法,这是其中一个,http://blog.

   唯实惟新 至诚致志
2016-03-11 11:00
csulijing
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2016-3-11
得分:6 

//Print all arrangements of 1 to 9.

#include <stdio.h>

int main()
{
    void arrange(int*, int);
    int a[10];
    a[0]=0;
    arrange(a, 1);
    return 1;
}

void arrange(int* a, int sub)
{
    int norep(int*i, int);
    void print(int*);
    int i;
    for(i=1;i<=9;i++)
    {
        a[sub]=i;
        if(sub==1)
            arrange(a, sub+1);
        else
        {
            if(norep(a, sub))
            {
                if(sub==9) print(a);
                else arrange(a,sub+1);
            }
        }
    }
}

int norep(int* a, int sub)
{
    int i;
    for(i=1;i<sub;i++)
        if(a[i]==a[sub])
        {
            return 0;
        }
    return 1;   
}

void print(int* a)
{
    int i;
    for(i=1;i<=9;i++)
        printf("%d\t", a[i]);
    printf("\n");
}
2016-03-12 20:00
csulijing
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2016-3-11
得分:4 
multiloop(n)
{
    for(i=0;i<N;i++)
    {
        if(===1) directive;
        else multiloop(n-1);
    }
}
2016-03-12 20:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462359-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.114193 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved