問題
將數字 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);
}