黑马程序员技术交流社区

标题: 如何输出杨辉三角形? [打印本页]

作者: 张耀扬    时间: 2014-4-9 22:12
标题: 如何输出杨辉三角形?
要求输出杨辉三角形的前5行, 这个怎么做?

Java编程思想第4版.zip

1.83 MB, 下载次数: 96


作者: leon_hm    时间: 2014-4-10 08:26
  1. public class Yanghui {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 Yanghui(5);       
  5.         }

  6.         public static void Yanghui(int value)
  7.         {
  8.                 if (value < 3)
  9.                 {
  10.                 System.out.println("请重新输入数组大于3的值!");
  11.                 }
  12.                 else
  13.                 {
  14.                         int[][] arry = new int[value][value];
  15.                         System.out.println("杨辉三角形:");
  16.                         for (int i = 0; i < value; i++)
  17.                         {
  18.                                 String str = "";
  19.                                 str = padLeft(str,value - i, '\t');
  20.                                 System.out.print(str);
  21.                                 for (int j = 0; j <= i; j++)
  22.                                 {
  23.                                         if (i == j || j == 0)
  24.                                         {
  25.                                         arry[i][j] = 1;
  26.                                         }
  27.                                         else
  28.                                         {
  29.                                         arry[i][j] = arry[i - 1][ j - 1] + arry[i - 1][ j];
  30.                                         }
  31.                                         System.out.print(arry[i][ j] + "\t\t");
  32.                                 }
  33.                                 System.out.println();
  34.                         }
  35.                 }
  36.         }
  37.        
  38.         public static String padLeft (String str ,int size ,char c) {
  39.         if (str == null)
  40.             str = "";
  41.         int str_size = str.length();
  42.         int pad_len = size - str_size;
  43.         StringBuffer retvalue = new StringBuffer();
  44.         for (int i = 0; i < pad_len; i++) {
  45.             retvalue.append(c);
  46.         }
  47.         return retvalue.insert(0, str).toString();
  48.     }

  49. }
复制代码

作者: 张耀扬    时间: 2014-4-10 11:57
leon_hm 发表于 2014-4-10 08:26

谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: luoyilan222    时间: 2014-4-10 15:30
public class Yanghui{

public static void main(String [] args){

int[][] a=new int[20][20];

for(int i=0;i<5;i++){
a[i][0]=1;
System.out.print(a[i][0]+" ");

for(int j=0;j<i;j++)

{
a[i+1][j+1]=a[i][j]+a[i][j+1];
System.out.print(a[i+1][j+1]);
System.out.print(" ");
}

System.out.println(" ");
}

}

}
作者: 小歪    时间: 2014-4-10 23:38
/*9.杨辉三角形

在屏幕上显示杨辉三角形

          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1 5 10 10 5 1

*问题分析与算法设计
杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。
本题作为程序设计中具有代表性的题目,求解的方法很多,这里仅给出一种。
从杨辉三角形的特点出发,可以总结出:
1)第N行有N+1个值(设起始行为第0行)
2)对于第N行的第J个值:(N>=2)
当J=1或J=N+1时:其值为1
J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和
将这些特点提炼成数学公式可表示为:
当x=1或x=N+1时,c(x,y)=1
当x=其他时,c(x,y)=(x-1,y-1)+c(x-1,y)
*/
import java.io.*;
class Num9{
        public static void main(String args[])throws Exception
        {
                BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
                System.out.print("请输入行数(<=13):");
                int n=Integer.parseInt(buf.readLine());
                if(n>13||n<1)  {System.out.println("数值错误!");}
                else
                {
                        for(int i=0;i<n;i++)
            {
              for(int k=0;k<24-2*i;k++) {System.out.print("*");}
                  for(int j=1;j<=i+1;j++)
                  {
                  System.out.printf("%4d",c(i,j));
                  }
                  System.out.println();
            }       
                }
               
        }
       
        public static int c(int x,int y)
                {
         int z;
         if(y==1||y==1+x) return 1;
         else z=c(x-1,y-1)+c(x-1,y);
         return z;
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2