九宮格

問題

將數字 1 …9 填入一個 3×3 的九宮格中,使得格子中每一橫行和的值全部相等,每一豎列和的值全部相等。請你計算有多少種填數字的方案


答案

72


思路

還是用全排列做


實現代碼

#include <iostream>

using namespace std;
int main() {
    int a[9]={1,2,3,4,5,6,7,8,9};
    int x[3][3];
    int pp=0;
    do {
        int u=0;
        for (int i=0;i<3;i++) {
            for (int j=0;j<3;j++) {
                x[i][j]=a[u];
                u++;
            }
        }

        int sum1=x[0][0]+x[0][1]+x[0][2];
        int sum2=x[1][0]+x[1][1]+x[1][2];
        int sum3=x[2][0]+x[2][1]+x[2][2];

        int sum4=x[0][0]+x[1][0]+x[2][0];
        int sum5=x[0][1]+x[1][1]+x[2][1];
        int sum6=x[0][2]+x[1][2]+x[2][2];

        if (sum1==sum2 &&sum1==sum3 &&sum2==sum3 &&sum4==sum5 &&sum4==sum6 && sum5==sum6) {
            pp++;
        }
    } while (next_permutation(a, a+9));

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