问题
将数字 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);
}