算法示例一:
view plaincopy to clipboardprint? public static void GetYangHuiArray2(int d) { int k = d;//最大值范圍, int c = 0;//最小值范圍 int[,] a = new int[d + 1, d + 1]; int aa = k / 2 + 1; for (int l = 0; l < aa; l++) { for (int i = c; i <= k; i++) { for (int j = c; j <= k; j++) { a[i, j] += 1; } } k -= 1; c += 1; } for (int i = 0; i <= d; i++) { for (int j = 0; j <= d; j++) { Console.Write(a[i, j]); Console.Write('\t'); } Console.WriteLine(); } }
思路二:
第一步:規(guī)律
1、打印行數(shù)列數(shù)均為:n+1
2、打印數(shù)值,為位置到正方形的最近邊距(4個邊距中最小的);蛘呔嚯x中心點越近的越大(取距離中心的距離,然后被n+1減一下。)
第二步:抽象出算術(shù)邏輯
i,j范圍:1-n
到中心點的距離:左右|n+1-i| 上下|n+1-j|
值:n-最近的距離
算法示例二: (清晰,易懂)
view plaincopy to clipboardprint? public static void GetYangHuiArray4(int num) { for (int i = 0; i <= num; i++) { for (int j = 0; j <= num; j++) { int min = i < j ? i : j; int max = i > j ? i : j; if (i + j < num) { Console.Write(min + 1); Console.Write('\t'); } else { Console.Write(num - max + 1); Console.Write('\t'); } } Console.WriteLine(); } }
算法示例三:( 更簡潔的)
view plaincopy to clipboardprint? public static void GetYangHuiArray1(int num) { for (int i = 0; i < num + 1; i++) { for (int j = 0; j < num + 1; j++) { Console.Write("{0}\t", Math.Min(Math.Min(i + 1, num - i + 1), Math.Min(j + 1, num - j + 1))); } Console.WriteLine(); } }
出處:邀月的博客周記
責(zé)任編輯:bluehearts
上一頁 一個類似于楊輝三角的數(shù)組算法思路 [1] 下一頁 一個類似于楊輝三角的數(shù)組算法思路 [3]
◎進入論壇網(wǎng)絡(luò)編程版塊參加討論
|