国产探花免费观看_亚洲丰满少妇自慰呻吟_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) //換行符格式控制
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 左贡县| 鄂州市| 龙南县| 莱州市| 东辽县| 双柏县| 蒙山县| 汉沽区| 辉县市| 明溪县| 惠州市| 栾川县| 凤台县| 民勤县| 满洲里市| 孟州市| 绥中县| 大连市| 武乡县| 铜川市| 醴陵市| 南城县| 南宫市| 蓝山县| 南和县| 高阳县| 南陵县| 鄱阳县| 烟台市| 洪泽县| 郁南县| 花莲县| 汕头市| 上虞市| 镇坪县| 安阳县| 孝感市| 公安县| 宁河县| 东山县| 梅河口市|