首页 > 技术文章 > 杨辉三角_java实现版

javasds 2020-03-04 15:46 原文

杨辉三角是一个基础的算法题目 具体的实现如下:

 

打印输出杨辉三角图像:

 

 

 

规律总结:

1.最外面的两侧的数据都是1

2.中间元素的值为上一行本列值+上一行的上一列的值

 

根据规律可以写出如下代码

int[][] v=new int[n][n];

for (int i = 0; i < n; i++) {
            v[i][0]=1;
            v[i][i]=1;

            if (i>=2){
                for (int j = 1; j < i ; j++) {
                    v[i][j]=v[i-1][j-1]+v[i-1][j];
                }
            }
        }for (int i = 0; i < n; i++) {
            v[i][0]=1;
            v[i][i]=1;

            if (i>=2){
                for (int j = 1; j < i ; j++) {
                    v[i][j]=v[i-1][j-1]+v[i-1][j];
                }
            }
        }
for (int i=0;i<n;i++){

for (int j = 0; j <= i; j++) {
System.out.print(v[i][j]+" ");
}
System.out.println();
}
 

 

但是打印出的样式(Rt三角形)和我们的要求(等边三角形)不符,此处我们再加上从键盘输入指定的行列(m,n)输出对应的元素,完整代码如下。

import java.util.Scanner; //实现键盘录入

public class Yang {

    public static void yanghui(int n){
        int[][] v=new int[n][n];
        Scanner s=new Scanner(System.in);
        System.out.println("输入:");
        int x = s.nextInt()-1;//由于计算机计数是从0来开始 
        int y = s.nextInt()-1;

        for (int i = 0; i < n; i++) {
            v[i][0]=1;
            v[i][i]=1;

            if (i>=2){
                for (int j = 1; j < i ; j++) {
                    v[i][j]=v[i-1][j-1]+v[i-1][j];
                }
            }
        }
        for (int i=0;i<n;i++){

            for (int k=0; k<n-i; k++){//输出格式
                System.out.print(" ");
            }

            for (int j = 0; j <= i; j++) {
                System.out.print(v[i][j]+" ");
            }
            System.out.println();
        }

        System.out.println("**********输出结果*************");

        int end=v[x][y];
        System.out.println(end);
    }



    public static void main(String[] args) {
        yanghui(10);//设置杨辉三角的行数
    }
}

 

推荐阅读