#include "iostream.h"
int a[9];
void PaiLie(int n) //生成1~9的全排列
{
for(int i=0;i<9;i++)
{
for(int i=0;i<9;i++)
if(a[i]<n+1)a[i]=0;
if(!a[i])
{a[i]=n;
if(n>1)
PaiLie(n-1);
else
{
if ( //判定橫豎斜之和為15
a[0]+a[1]+a[2]==15&&a[3]+a[4]+a[5]==15&&a[6]+a[7]+a[8]==15&&
a[0]+a[3]+a[6]==15&&a[1]+a[4]+a[7]==15&&a[2]+a[5]+a[8]==15&&
a[0]+a[4]+a[8]==15&&a[2]+a[4]+a[6]==15
)
{for(int j=0;j<3;j++)
{
for(int i=0;i<3;i++)
cout<<a[j*3+i]<<' ';cout <<endl;
}
cout <<endl;}
}
}
}
}
main()
{
PaiLie(9);
}
過去看這個帖子,最佳答案沒用窮舉
/question/56156324.html