#include<iostream>
using namespace std;
int used[10]={0}; //初始化定义数字,如果用过则,used==1;否则used==0;
int a[3][3];
void search(int m);
void testout();
void output();
int main()
{
search(0);
return(0);
}
void search(int m) //搜索递归
{
int i;
if(m==9)
{
testout();
}
else
{
for(i=1;i<=9;i++)
{
if(used[i]==0)
{
used[i]=1;
a[m/3][m%3]=i;
search(m+1);
used[i]=0;//将之恢复为没用过的!!!
}
}
}
}
void testout() //测试
{
int i,flag=1;
for(i=0;i<=2;i++)
{
if(a[i][0]+a[i][1]+a[i][2]!=15||a[0][i]+a[1][i]+a[2][i]!=15)
{
flag=0;
break;
}
}
if(flag==1)
{
if(a[0][0]+a[1][1]+a[2][2]!=15||a[0][2]+a[1][1]+a[2][0]!=15)
{
flag=0;
}
}
if(flag==1)
{
output();
}
}
void output() //输出
{
int i,j;
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
if(j==2)
{
cout<<a[i][j]<<endl;
}
else
{
cout<<a[i][j]<<' ';
}
}
}
cout<<endl;
}