国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

OPENJUDGE 1.8 22:神奇的幻方

2019-11-08 03:05:27
字體:
來源:轉載
供稿:網友

22:神奇的幻方 (從OPENJUDGE引入) 查看

描述 幻方是一個很神奇的N*N矩陣,它的每行、每列與對角線,加起來的數字和都是相同的。 我們可以通過以下方法構建一個幻方。(階數為奇數) 1.第一個數字寫在第一行的中間 2.下一個數字,都寫在上一個數字的右上方: a.如果該數字在第一行,則下一個數字寫在最后一行,列數為該數字的右一列 b.如果該數字在最后一列,則下一個數字寫在第一列,行數為該數字的上一行 c.如果該數字在右上角,或者該數字的右上方已有數字,則下一個數字寫在該數字的下方

輸入 一個數字N(N<=20) 輸出 按上方法構造的2N-1 * 2N-1的幻方 樣例輸入 3 樣例輸出 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

題目分析: 幻方的構造題目已經給出,難點在于當右上角有數時的情況。判斷有無數的方法就是將數組歸零,元素若為“0”則無數,之后將兩種情況分類討論。

程序樣例

#include<cstdio>int main(){ int N,hf[41][41]={},tot=1; //tot為計數單位 scanf("%d",&N); N=2*N-1; //構造(2N-1)*(2N-1)的幻方 int i=1,j=(N-1)/2; while(tot<=N*N) //遍歷每一個元素 { int m,n; m=i-1>=0? i-1:N-1; n=j; if(!hf[m][n]) //無數 { hf[m][n]=tot; i--; j++; } else //有數 { m=i+1; //降一排 if(m>=N) m=0; n--; //退一列 if(n<0) n=N-1; hf[m][n]=tot; i++; } if(i<0) i=N-1; if(j>=N) j=0; tot++; } for(int i=0;i<N;i++) { if(i) //換行符格式控制
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新绛县| 贡觉县| 东丰县| 南安市| 阳西县| 蒲江县| 威远县| 浙江省| 刚察县| 华安县| 瑞昌市| 阳高县| 青川县| 苍溪县| 海安县| 鲜城| 吴忠市| 会宁县| 南木林县| 肃南| 西贡区| 贡山| 卫辉市| 若羌县| 周宁县| 澄江县| 固镇县| 丘北县| 砀山县| 富阳市| 铁力市| 平度市| 垫江县| 江口县| 合山市| 孝昌县| 三河市| 三亚市| 刚察县| 嘉义市| 昌吉市|