问题描述:杨辉三角相信大家应该都不陌生,如果不太清楚的话请大家参见这里:百度百科-杨辉三角。本次我们的任务便是编写一个方法,依据输入的行数打印杨辉三角。(ps:据我们的算法老师讲,打印杨辉三角曾经在我们学校的一次期末考试题目中出现,当时还难倒了不少人,吐舌头。现在想想,只要耐下心慢慢的总结杨辉三角的排版以及每个位置上的数据,这个问题也没有什么太难的地方)。
思考:本问题我们主要是要解决两个问题:1、每个位置上的值;2、排版格式。这里我引用百度百科里面的一张图片:
这张图很清晰的展示出了杨辉三角的排版布局。很显然,数字与数字之间我们无法用一个定量的空格来控制,因为随着杨辉三角的层数的增加,每一层的最大值也在不断的变化,所以数字之间的间距必须随着用户输入的层数的变化而变化。对此我的解决办法是求出用户输入层数中出现的最大数值,然后以此数值的位数来进行打印。同时我们也应该注意到,杨辉三角中最后一层的元素个数(包括空格部分)是层数的二倍减一。
综上所述程序的细节如下:
1、依据用户希望打印的层数确定三角中会出现的最大的数值;
2、计算出将要打印出来的数列;
3、将数列中的数值依照“金字塔”型的方式输出;
程序截图:
源码下载:http://download.youkuaiyun.com/detail/kenanlinghui/5733527(依旧收取一积分的劳务费,吐舌头)