请教各位大侠:
我想打印一个等腰的杨辉三角,因为10位数与个位数的占位不一样,所以阶数超过5就会变形,无法打印成等腰的,麻烦请教各位大侠有解决的办法吗?如果没有,麻烦看过的人给点自己的看法,拜谢啊!
源码如下:
Sub Main()
Dim s As String = " "
Dim N = 6
Dim a(N, N)
For i = 0 To N - 1
Console.Write(Mid(s, 1, N - i))
For j = 0 To i
If (j = 0 Or j = i) Then
a(i, j) = 1
Else
a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
End If
Console.Write(a(i, j).ToString + " ")
Next
Console.WriteLine()
Next i
Console.Read()
End Sub
n=5
n=6
有个磋的方法,可以减小变形,将每个打印单位的长度处理成一样的;
例如:如果最长能打印到3位数,那就在打印1位数的时候,左右各多加一个空格,打印2位数的时候添加一个空格;大概就是这种思想。
处理的完善点:输入N后计算出能打印到的最长位数Len,来决定每个数字串应该占用的位数;对于长度不足Len的字符串用空格补齐,如果需要补的空格是偶数,就在数字串两边对称补齐,如果是奇数,就任意选择某一边多一个空格凑合一下算了
我和楼上的观点是相同的,这样的话,为了简便就不要直接打印了,先储存到变量中,判断最高阶数所包含的数字的位数,来增加前几阶的空格。
方法是如此,但实际上是无法形成等要的,因为奇数位的行遇到偶数位的行后总是要错半个字节的位数...所以始终会有偏差。