首页 新闻 会员 周边

打印杨辉三角(阶数超过5变形)

0
悬赏园豆:20 [已解决问题] 解决于 2009-11-15 21:29

请教各位大侠:

  我想打印一个等腰的杨辉三角,因为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

蝙蝠23155的主页 蝙蝠23155 | 初学一级 | 园豆:150
提问于:2009-11-09 16:54
< >
分享
最佳答案
0

有个磋的方法,可以减小变形,将每个打印单位的长度处理成一样的;

例如:如果最长能打印到3位数,那就在打印1位数的时候,左右各多加一个空格,打印2位数的时候添加一个空格;大概就是这种思想。

处理的完善点:输入N后计算出能打印到的最长位数Len,来决定每个数字串应该占用的位数;对于长度不足Len的字符串用空格补齐,如果需要补的空格是偶数,就在数字串两边对称补齐,如果是奇数,就任意选择某一边多一个空格凑合一下算了

收获园豆:15
凡丁Blog | 菜鸟二级 |园豆:240 | 2009-11-09 17:57
其他回答(1)
0

我和楼上的观点是相同的,这样的话,为了简便就不要直接打印了,先储存到变量中,判断最高阶数所包含的数字的位数,来增加前几阶的空格。

方法是如此,但实际上是无法形成等要的,因为奇数位的行遇到偶数位的行后总是要错半个字节的位数...所以始终会有偏差。

收获园豆:5
江海客 | 园豆:210 (菜鸟二级) | 2009-11-11 15:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册