zoukankan      html  css  js  c++  java
  • 课堂作业之杨辉三角形

    杨辉三角形数学模型

        1
       11
      121
     1331
    

    通过java实现打印杨辉三角形

    用循环队列来实现杨辉三角形的打印

    package PascalTriangle;
    
    import javafoundations.CircularArrayQueue;
    
    import java.util.Scanner;
    
    public class YHTriangleQueue {
        public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入杨辉三角的行数:");
        int n = scan.nextInt();
        int i = 0;
    
        CircularArrayQueue<Integer> queue = new CircularArrayQueue<>();
        //初始值设置为 0,1
        queue.enqueue(0);
        queue.enqueue(1);
    
        while (i <= n) {
            int x = queue.dequeue();
            int y = queue.first();
            if (x == 0) {
                i++;  //每次 x = 0 时行数加一
                queue.enqueue(0);
            }
            queue.enqueue(x + y);  //上一轮输出值与检测值之和,相当于前一行相邻的两元素之和
            if (x == 0) {
                System.out.println();  //删除 0 相当于换行
                for (int j = 0; j < 2 * (n - i); j++) {  //根据具体变化动态输出空字符串
                    System.out.print(" ");
                }
            } else
                System.out.print(x + "   ");  //根据具体变化动态输出空字符串
            }
        }
    }
    
    图片名称 - 单步跟踪 图片名称

    二维数组打印杨辉三角

    public class Yanghui1 {
    public static void main(String[] args)
    {
       int num = 10;             //设置杨辉三角的行数  
       int[][] yangHui = new int [num][];          //申请二维数组存放杨辉三角数值
       for(int i = 0; i < yangHui.length; i ++)
       yangHui[i] = new int[i + 1];
    
    for(int i = 0; i < yangHui.length; i ++)       //利用杨辉三角的计算公式,初始化数组
      for(int j = 0; j < yangHui[i].length; j ++)
      {
        yangHui[i][0] = yangHui[i][i] = 1;        //每一行第一个数和最后一个数都为1
        if(i > 1 && j > 0 && j < i)
          yangHui[i][j] = yangHui[i - 1][j] + yangHui[i -1][j -1];  //杨辉三角的值等于其上一层两个值之和
      }
    
    for(int i = 0; i < yangHui.length; i ++)    //遍历数组,以输出
        {
      for(int j = 0; j < (num - i - 1) / 2; j ++)
        System.out.print("	");
      for(int j = 0; j < yangHui[i].length; j ++)
        System.out.print(yangHui[i][j] + "	");
    
      System.out.println();
        }
      }
    }
    

    两个一维数组打印杨辉三角

    public class YangHui2    {
      public static void main(String[] args)  
       {
        int num = 20;
        int[] up = new int[num];    //申请UP数组用以存储上一层的数据
        for(int i = 0; i <= num; i ++)
         {      
          int[] a = new int[i];     //申请a数组用以存放本层的运算结果
          for(int j = 0; j < i; j ++)
          {
            if(j == 0 || j == i)           //将本层第一个和最后一个数值赋值为1
              a[j] = up[j] = 1;
    
            if(i > 2 && j !=0 && j != i )   //当从第三行起,非首尾数字的值等于上方两数只和
              a[j] = up[j - 1] + up[j];
          }
    
          for(int k = 0; k < i; k ++)      //将本层的运算结果存到up数组中,以供一下次运算使用
            up[k] = a[k];
    
          for(int k = 0; k < (num - i - 1) / 2; k ++)      //打印本层数字
            System.out.print("	");
          for(int k = 0; k < i; k ++)
            System.out.print(a[k] + "	");
    
          System.out.println();
            }
          }
        }
    

    一个一维数组打印杨辉三角

    public class YangHui3{
    public static void main(String[] args)
      {
        int num = 10;
    
    int yangHui[] = new int[(1 + num) * num / 2];    //申请数组存放杨辉三角的数值
    for(int i = 0; i < num; i ++)
    {
      for(int j = 0; j < (num - i - 1) / 2; j ++)
        System.out.print("	");
    
      int temp = (1 + i) * i / 2;     //temp表示已经存储的数字个数
      for(int j = 0; j <= i; j ++)
      {
        if(j == 0 || j == i)          //每一层的首尾数值为1
          yangHui[temp + j] = 1;
          
        else        
          yangHui[temp + j] = yangHui[temp + j - i] + yangHui[temp + j - i - 1];//非首尾数值为上面两数之和
          System.out.print(yangHui[temp + j] + "	");
      }
    }
    System.out.println();
      }
    }
  • 相关阅读:
    一个强大的LogParser的UI工具logparserlizard简介
    Spring.NET 1.3.2 集成 NHibernate 3.2 3 监控及日志
    Spring.NET 1.3.2 集成 NHibernate 3.2 5 事务管理
    id 的选择器为什么要这么写 li#first?
    学习《Microsoft SQL Server 2008 技术内幕:TSQL 语言基础 》之一:学习资料、数据库、数据库脚本准备
    mybatisnet 1 获取 mybatisnet
    MusicStore 项目的完整配套视频!
    Spring.NET 1.3.2 集成 NHibernate 3.2 1 下载软件
    Spring.NET 1.3.2 集成 NHibernate 3.2 4 实现基本的数据访问
    Spring.NET 1.3.2 集成 NHibernate 3.2 2 配置使用 Spring.NET 的网站
  • 原文地址:https://www.cnblogs.com/shuailinzhen/p/7874990.html
Copyright © 2011-2022 走看看