我用c語言程式設計,採用地毯式的搜尋方法,四階幻方用不到1秒就求出來了,總共7040個,對於五階幻方,程式過十秒左右才開始乙個乙個的輸出來,速度太慢了,估計得等好多天才能求出總數來。有沒有什麼好的辦法能夠快速將所有五階幻方求出來嗎?請高手賜教。
附上我的源程式**(理論上可求任意階幻方的總數):
#include "stdio.h"
#define length 10
#define size length*length
int a[length][length],b[size],degree,number=0,max,sum;
int main()
if(k<3 || (k==3 && (b[1]==1 && b[2]==1)))
}if(j==degree-3)
if(k<3 || (k==3 && (b[1]==1 && b[2]==1)))
}a[i][j]=m;
b[m]=1;
j++;
break;
}if(j==degree-2)
else
}if(j==1)
if(y==x)
for(k=degree-2;kmax)
if(j==0 && i>0)
else if(j>0)
else if(i==0 && j==0)}}
printf("the total number is %d/n",number);
return 0;
}在vc++6.0執行即可
奇數階幻方
編制奇數階幻方的方法 問題如 http community.csdn.net expert topic 5698 5698866.xml?temp 1421167 簡單描述 給 1 9,9個數,擺放成 3 3 的矩陣,要求每橫排,每豎排,對角線 上 3個數字相加均為15。其中矩陣也可為5 5,7 7...
四階幻方 反幻方c
把1 16的數字填入4x4的方格中,使得行 列以及兩個對角線的和都相等,滿足這樣的特徵時稱為 四階幻方。四階幻方可能有很多方案。如果固定左上角為1,請計算一共有多少種方案。比如 1 2 15 16 12 14 3 5 13 7 10 4 8 11 6 9 以及 1 12 13 8 2 14 7 11...
c 奇階幻方
奇階幻方的產生規則 將1放在第一行中間一列 從2開始直到n n止各數依次按下列規則存放 按 45 方向行走,如向右上 每乙個數存放的行比前乙個數的行數減1,列數加1 如果行列範圍超出矩陣範圍,則迴繞。如果按上面規則確定的位置上已有數,或上乙個數是第1行第n列時,include include usi...