已知一个数字的四阶幻方的编程求解

以上代码哪里出错,求解问题是:已经知道四阶幻方的左上角为1,求解四阶幻方

#include
#include
#include
using namespace std;
//输出
void Display(int a[],int n)
{
    for(int i=0;i4)<Test(int a[],int n)
{
    int s[10]={0};
    s[0]=1+a[4]+a[9]+a[14];
    s[1]=a[2]+a[5]+a[8]+a[11];
    s[2]=1+a[3]+a[7]+a[11];
    s[3]=1+a[0]+a[1]+a[2];
    s[4]=a[0]+a[4]+a[8]+a[12];
    s[5]=a[1]+a[5]+a[9]+a[13];
    s[6]=a[2]+a[6]+a[10]+a[14];
    s[7]=a[3]+a[4]+a[5]+a[6];
    s[8]=a[7]+a[8]+a[9]+a[10];
    s[9]=a[11]+a[12]+a[13]+a[14];
    if(s[0]==s[1]&&s[1]==s[2]&&s[2]==s[3]&&s[3]==s[4]&&s[4]==s[5]&&s[5]==s[6]&&s[6]==s[7]&&s[7]==s[8]&&s[8]==s[9]&&s[9]==s[0])

        return 1;
    else 
        return 0;
}
//主函数
int main()
{
    int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    int cnt=0;
    do
    {
        if(Test(a,15)==1)
        {
            Display(a,15);
            cnt++;
        }
    }while(next_permutation(a,a+15));
    cout<<"cnt="<

不太懂这个幻方,确定Test函数里这些数组元素求和下标值没有写错