C语言用穷举法编写3×3的幻方

来源:百度知道 编辑:UC知道 时间:2024/06/06 07:53:22
我自己试着写了些天了
每次都失败了,所以来请教各位达人^_^

这是我用穷举法写的
#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);
}

过去看这个帖子,最佳答案没用穷举
http://zhidao.baidu.com/question/56156324.html

找个全排列算法试试,比如下面这个

#include <stdio.h>
#i