藍橋杯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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章