蓝桥杯2014年c/c++|B组07(六角填数)

标题:六角填数

在这里插入图片描述

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

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

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

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

c++代码

#include <iostream>

using namespace std;
int main()
{
    int a,b,c,d,e,f,g,h,n;
    int flag=0;
    int line[6];
    for(a=1;a<=12&&flag==0;a++) {
        for (b = 1; b <= 12 && flag == 0; b++) {
            if (a != b) {
                for (c = 1; c <= 12 && flag == 0; c++)
                    if (a != c && b != c) {
                        for (d = 1; d <= 12 && flag == 0; d++)
                            if (a != d && b != d && c != d) {
                                for (e = 1; e <= 12 && flag == 0; e++)
                                    if (a != e && b != e && c != e && d != e) {
                                        for (f = 1; f <= 12 && flag == 0; f++)
                                            if (a != f && b != f && c != f && d != f && e != f) {
                                                for (g = 1; g <= 12 && flag == 0; g++)
                                                    if (a != g && b != g && c != g && d != g && e != g && f != g)
                                                        for (h = 1; h <= 12 && flag == 0; h++) {
                                                            if (a != h && b != h && c != h && d != h && e != h &&
                                                                f != h && g != h) {
                                                                for (n = 1; n <= 12 && flag == 0; n++)
                                                                    if (a != n && b != n && c != n && d != n &&
                                                                        e != n && f != n && g != n && h != n) {
                                                                        line[0] = 8 + a + b + c;
                                                                        line[1] = 1 + a + n + e;
                                                                        line[2] = e + f + g + h;
                                                                        line[3] = 8 + n + 3 + f;
                                                                        line[4] = 1 + b + d + h;
                                                                        line[5] = 3 + c + d + g;
                                                                        for(int i=1;i<6;i++){
                                                                            if(line[0]==line[i])
                                                                                continue;
                                                                            flag=1;
                                                                            break;
                                                                        }


                                                                    }
                                                            }
                                                        }
                                            }
                                    }
                            }
                    }
            }
        }
    }
    cout<<n;
    return 0;
}

发布了14 篇原创文章 · 获赞 1 · 访问量 326

猜你喜欢

转载自blog.csdn.net/qq_45797026/article/details/104345155