1579.三阶幻方
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
三阶幻方是最简单的幻方,又叫九宫格,是由1,2,3,4,5,6,7,8,9九个数字组成的一个三行三列的矩阵,其对角线、横行、纵向的的和都为15。
输入
无
输出
按字典序输出所有的满足条件的幻方矩阵,每两个数字之间带一个空格,行尾无空格,每个幻方后带一个空行。
输入样例
无
输出样例
无
本题同样是使用回溯思想完成,相比于生成二进制数01两个值,数字范围为0~9,但是每个数字只能使用一次,所以使用used[10]数组来存储0~9十个数字的状态,used[i] = 0为未使用,反之则为使用过的数字。使用二维数组a[3][3]存储幻方,m/3可以计算出行,m%3计算出对应的列,由此完成数位的存储。在m = 9 时候判断是否满足幻方的条件,满足则输出即可。
#include<iostream>
using namespace std;
int used[10] = {0};
int a[3][3];
void search(int m);
bool isOk();
void output();
int main(){
search(0);
return 0;
}
void search(int m){
int i;
if(m == 9){
if(isOk()){
output();