算法示例四:( 边计算边输出)
view plaincopy to clipboardprint? public static void GetYangHuiArray5(int n) { System.Diagnostics.Debug.Assert(n > 0); char space = '\t'; Console.WriteLine("n={0}", n); var l = n + 1; var r = l % 2; var h = (l + r) / 2; for (int i = 1; i <= h; i++) { StringBuilder line = new StringBuilder(); for (int j = 1; j <= i; j++) { line.Append(j); line.Append(space); } for (int j = l - 2 * i + r; j > 0; j--) { line.Append(i); line.Append(space); } for (int j = i - r; j > 0; j--) { line.Append(j); line.Append(space); } line.Remove(line.Length - 1, 1); Console.WriteLine(line.ToString()); } for (int i = h - r; i > 0; i--) { StringBuilder line = new StringBuilder(); for (int j = 1; j <= i; j++) { line.Append(j); line.Append(space); } for (int j = l - 2 * i + r; j > 0; j--) { line.Append(i); line.Append(space); } for (int j = i - r; j > 0; j--) { line.Append(j); line.Append(space); } line.Remove(line.Length - 1, 1); Console.WriteLine(line.ToString()); } }
算法示例五: (其他类似算法)
view plaincopy to clipboardprint? public static void GetYangHuiArray3(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { GetMin(i, j); } for (int j = n - 1; j >= 1; j--) { GetMin(i, j); } Console.WriteLine(); } for (int i = n - 1; i >= 1; i--) { for (int j = 1; j <= n; j++) { GetMin(i, j); } for (int j = n - 1; j >= 1; j--) { GetMin(i, j); } Console.WriteLine(); } }
调用示例:
view plaincopy to clipboardprint? public static void Main(string[] args) { Console.WriteLine("input the rownum:"); int input = int.Parse(Console.ReadLine()); while (input > 0) { Console.WriteLine("n=" + input + ";"); GetYangHuiArray2(input); input = int.Parse(Console.ReadLine()); } }
效果:
抛砖,期望有更多的思路分享。
邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。 助人等于自助! 3w@live.cn
转载:http://blog.csdn.net/downmoon/archive/2010/07/05/5712679.aspx
本文链接:http://www.blueidea.com/tech/program/2010/7784.asp
出处:邀月的博客周记
责任编辑:bluehearts
上一页 一个类似于杨辉三角的数组算法思路 [2] 下一页
◎进入论坛网络编程版块参加讨论
|