杨辉三角形
杨辉三角形这种题目算比较常见的了,不是很复杂,但写这篇博客主要是因为有一种相对来说比较巧妙的解法想要分享给大家。
解法一、利用二位数组来解
代码如下:
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// java数组在创建后内容都会被0填满,用Arrays.fill可以将整个一位数组里存入同一个元素,Arrays.toString也可以直接输出一维数组
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] nums = new int[n][n];
System.out.println(Arrays.toString(nums[0]));
for(int i=0;i<n;i++){
nums[i][0] = 1;
}
nums[1][1] = 1;
if(n>2){
for(int i=2;i<n;i++){
for(int j=1;j<=i;j++){
nums[i][j] = nums[i-1][j]+nums[i-1][j-1];
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
}
}
解法二(重点记住)
这里记住number = number * (i-j) / (j+1)
这个公式每次输出number即可得到杨辉三角形了
import java.util.Scanner;
public class test4 {
public static void main(String[] args) {
//这种方法可以缩短时间复杂度,而且简单,重点掌握
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] nums = new int[n][n];
for(int i=0;i<n;i++){
Long number = (long) 1;
for(int j=0;j<=i;j++){
System.out.print(number+" ");
// number = number*(i-j)/(j+1)是重点
//数据过大可能溢出,用Long型
number = (Long)number * (i-j)/(j+1);
}
System.out.println();
}
}
}