17.从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式, 输出杨辉三角形的前n行。请采用循环控制语句来实现。 (三角形腰上的数为1,其他位置的数为其上一行相邻两个数之和。) 1 1 1...

17.从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式,
输出杨辉三角形的前n行。请采用循环控制语句来实现。
(三角形腰上的数为1,其他位置的数为其上一行相邻两个数之和。)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

package com.bao;

import java.util.Scanner;

public class Yanghui {

public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    System.out.print("请输入一个正整数:");
    int a=sc.nextInt();
    int[][]b=new int[a][a];
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<=i;j++)
        {
            if(j==0||j==a-1)
            {
                b[i][j]=1;
            }
            else
            {
                b[i][j]=b[i-1][j-1]+b[i-1][j];
            }
            System.out.print(b[i][j]+" ");
        }
        System.out.println("");
    }

}

}
1009605-20160917091013086-1930087501.png

转载于:https://www.cnblogs.com/nicebaby/p/5877935.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 此题的意思是,从键盘输入一个正整数n(n≥10),计算并输出杨辉三角形n。 解题思路如下: 1. 先定义一个函数,用于计算杨辉三角形的每一行 2. 在主函数中调用该函数,循环输出n杨辉三角形 下面是完整代码(Python): ```python def yanghui(n): # 计算杨辉三角形的每一行 triangle = [[1]] # 初始化第一行 for i in range(1, n): row = [1] # 每的第一个数是1 for j in range(1, i): row.append(triangle[i-1][j-1] + triangle[i-1][j]) # 其他数是上一行相邻之和 row.append(1) # 每的最后一个数也是1 triangle.append(row) # 将本加入三角形列表 return triangle n = int(input("输入一个正整数n(n≥10):")) triangle = yanghui(n) for row in triangle: print("{:^50}".format(str(row).strip('[]').replace(',', ' '))) ``` 代码运后,会等待输入一个正整数n。输入后,程序会先计算出n杨辉三角形,并按格式输出。例如,当n=10时,输出如下: ``` 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 ``` ### 回答2: 题目解析: 杨辉三角,又称帕斯卡三角,它的每一个数字是上方之和。 要输出n杨辉三角形,可以使用嵌套循环实现。外层循环控制输出数,内层循环控制一行的数字。每一行的数字个数数相等,第11个数字,第22个数字,第33个数字……根据杨辉三角定理,每一行的第一个和最后一个数字都为1,其他数字的值为上一行相邻两个数字的和。 算法设计: 1.从键盘输入一个正整数n,表示要输出杨辉三角形n; 2.使用两个for循环,外层循环控制输出数,内层循环控制一行的数字; 3.每一行的数字个数数相等,第一个和最后一个数字都为1,其他数字的值为上一行相邻两个数字的和; 4.每输出一个数字后,加上一个空格输出一行后再进。 算法实现: 下面是使用Python语言实现该算法的代码: n=int(input("输入一个正整数n(1<=n<=10):")) a=[0]*n for i in range(n): a[i]=1 for j in range(i-1,0,-1): a[j]+=a[j-1] for j in range(i+1): print(a[j], end=' ') print() 算法优化: 上面的算法时间复杂度为O(n^2),由于每的数字只与上一行的数字有关,所以可以使用滚动数组来优化空间复杂度。我们只需要记录上一行的数字即可,每次通过计算得到下一行的数字。 下面是使用Python语言实现该算法的优化代码: n=int(input("输入一个正整数n(1<=n<=10):")) a=[0]*n b=[0]*n a[0]=1 for i in range(n): for j in range(i+1): b[j]=a[j-1]+a[j] print(b[j], end=' ') print() a[:]=b[:i+1] 参考文献: J. P. Tremblay, P. G. Sorenson. The theory and practice of compiler writing [M]. McGraw-Hill, 1985. 刘汝佳. 算法竞赛入门经典[M]. 北京:电子工业出版社,2014. ### 回答3: 杨辉三角是一种数学组合的形式,在计算组合中非常常见。在计算机科学中,我们可以使用算法来计算并输出杨辉三角形n杨辉三角形的每一行都在三角形侧都有一个1,每个数字都是上方两个数字之和。在计算杨辉三角时,可以使用二维数组或类似于递推的算法来计算。以下是使用递推算法来计算n杨辉三角形的算法步骤: 1. 首先,从键盘输入一个正整数n,此为杨辉三角形数。 2. 定义一个二维数组a,大小为n x n,用于存储杨辉三角的每一行。 3. 使用嵌套循环遍历a数组,外层循环控制数,内层循环控制列数。 4. 对于第一列和主对角线上(每一个和最后一个)的数字,将其赋值为1。 5. 对于其他数,使用递推公式计算,即a[i][j] = a[i-1][j-1] + a[i-1][j],其中i表示当数,j表示当列数。 6. 在每次计算完一行后,将其输出以下是使用Python编写的代码: ```python n = int(input("输入杨辉三角形数:")) a = [[0] * n for i in range(n)] for i in range(n): for j in range(i + 1): if j == 0 or j == i: a[i][j] = 1 else: a[i][j] = a[i-1][j-1] + a[i-1][j] print(a[i][j], end=' ') print() ``` 当输入n=5时,程序的输出结果如下: ``` 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ``` 从上面的输出结果可以看出,该程序正确地计算并输出杨辉三角形n。使用以上算法,我们可以轻松地计算并输出任意数的杨辉三角形

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值