黑马程序员技术交流社区
标题:
编写一个程序,输出杨辉三角。
[打印本页]
作者:
邵震
时间:
2013-4-1 14:24
标题:
编写一个程序,输出杨辉三角。
本帖最后由 邵震 于 2013-4-2 15:03 编辑
编写一个程序,输出杨辉三角。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
前提:端点的数为1.
1、每个数等于它上方两数之和。
2、每行数字左右对称,由1开始逐渐变大。
3、第n行的数字有n项。
4、第n行数字和为2^(n-1)。(2的(n-1)次方)
5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m)。
这个题是我从习题里找的 求高手帮忙打一下代码 不要用递归 我还没学到那里 最好能附上详细注释
谢了
作者:
郭沐昌
时间:
2013-4-1 14:26
同求 c语言的我倒是会
作者:
刘胜寒
时间:
2013-4-1 14:41
我来给你们解答一下 ==我代码奉上
作者:
刘胜寒
时间:
2013-4-1 15:02
public class Main
{
public static void main(String[] aegs)
{
int[][] arr = new int[33][33];
Scanner cin = new Scanner(System.in);
for(int i=1;i<33;i++)//保存结果,先把杨辉三角的前32行保留下来
{
for(int j=1;j<=i;j++)
{
if(j==1||j==i) arr[i][j]=1;//每一行的第一个和最后一个都是1
else arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
}
}
while(cin.hasNext())//读入一个数 打印杨辉三角
{
int n = cin.nextInt();
for(int i=1;i<=n;i++)
{
for(int j =1;j<=i;j++)
{
if(j==i)
System.out.println(arr[i][j]);
else
System.out.print(arr[i][j]+"\t");
}
}
}
}
}
复制代码
凑合着看吧...写的不怎么好,没能满足楼主的要求,我再想想
作者:
刘胜寒
时间:
2013-4-1 15:04
while(cin.hasNext())//读入一个数 打印杨辉三角
{
int n = cin.nextInt();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
System.out.print(" ");
for(int j =1;j<=i;j++)
{
if(j==i)
System.out.println(arr[i][j]);
else
System.out.print(arr[i][j]+" ");
}
}
}
复制代码
这次满足要求了,把上面的代码替换成这么一段代码就行了
作者:
刘胜寒
时间:
2013-4-1 15:08
当杨辉三角的数字大于10的时候就不是很规整了...
用Formant可以解决一下,就是不满足几位,前面补上空格
{9~@2TT1ERUT1VV)[RLG]ZG.jpg
(7.9 KB, 下载次数: 5)
下载附件
2013-4-1 15:07 上传
作者:
HM刘俊
时间:
2013-4-1 15:09
public class Yhsanjiao{
static public void main(String[] args){
int[][] a=new int[6][6];
for(int i=0;i<6;i++)
for(int j=0;j<6;j++) {
if (j<i) {
a[i][j]=1;
if(j==0){
a[i][j]=1;
}else{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}else{
a[i][j]=1;
}
}
for(int i=0;i<6;i++) {
for(int k=1;k<=6-i;k++)
System.out.print(" ");
for(int j=0;j<=i;j++){
System.out.print(a[i][j]+" ");
}
System.out.print("\n");
}
}
}
复制代码
希望楼主能看懂
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2