杨辉三角
来源:互联网 发布:虎牙象棋勇哥是软件 编辑:程序博客网 时间:2024/06/04 21:29
杨辉三角
1.问题描述
(a+b)的n次幂的展开式中各项的系数很有规律,
对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输入:4 2
输出:3
2.代码
public class Q109 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String string=scanner.nextLine(); String [] strings=string.split("\\s+"); int n=Integer.parseInt(strings[0]);//层 int m=Integer.parseInt(strings[1]);//列 // System.out.println(""+n+" "+m); int result=f109(n,m); System.out.println(result); } private static int f109(int n, int m) { if(n==1||m==1||n==m) return 1; else return f109(n-1,m-1)+f109(n-1,m); }}
3.打印杨辉三角
输入:11
输出:
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 1 10 45 120 210 252 210 120 45 10 1
4.方法1
public class Q109_1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); f109_1(n); } private static void f109_1(int n) { int m = n; for (int i = 1; i <= n + 1; i++) { String temp = ""; temp = getStrings(m--);//返回每行前的空格 System.out.print(temp); for (int j = 1; j <= i; j++) { System.out.print(getNum(i, j) + " "); } System.out.println(); } } private static String getStrings(int n) { String temp = ""; for (int i = 0; i < n; i++) { temp += " "; } return temp; } private static int getNum(int i, int j) {//返回数字 if (i == 1 || j == 1 || i == j) return 1; else return getNum(i - 1, j - 1) + getNum(i - 1, j); }}
5.方法2
import java.util.Scanner; public class Test { // 得到最大数的长度 public static int getMaxLen(int[] n){ int sum = 0; for(int i=0;i<=n.length/2;i++){ if(n[i]>sum){ sum = n[i]; } } return (""+sum).length(); } // 初始化填充杨辉三角 public static void init(int[][] m) { m[0] = new int[]{1}; // 初始第一行 for(int i=1;i<m.length;i++){ m[i] = new int[i+1]; for(int j=0;j<=i;j++){ if(j==0||j==i){ m[i][j] = 1; }else{ m[i][j] = m[i-1][j-1] + m[i-1][j]; } } } } // 输出空格 public static void printSp(int n){ for(int i=0;i<n;i++){ System.out.print(" "); } } // 显示杨辉三角 public static void show(int[][] m) { int len = getMaxLen(m[m.length-1]); // 得到最大数的长度+1个空格 if(len%2==0){ // 上一行下和对齐 len += 2; // 偶数加2 }else{ len += 1; // 奇数加1 } for(int i=0;i<m.length;i++){ // 输出 printSp((m.length-i)*len/2); // 输出(每行前)的若干空格 for(int j=0;j<=i;j++){ System.out.print(m[i][j]); printSp(len-(m[i][j]+"").length()); // 输出(数字间)的若干空格 } System.out.println(); } } public static void main(String[] args){ Scanner scan = new Scanner(System.in); int n = scan.nextInt(); if(n<=0) return ; int[][] m = new int[n][]; init(m); // 初始化填充杨辉三角 show(m); // 显示杨辉三角 } }
0 0
- 杨辉三角/帕斯卡三角
- (尹成)杨辉三角(正三角 倒三角)
- 学习:杨辉三角(帕斯卡三角)
- 杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角算法
- C# 杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角程序
- 打印杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角源代码
- 杨辉三角~~~~~~~~
- 杨辉三角
- 11. JDK 新特性
- 利用redis同步登陆实现session共享
- PAT 1093 CountPAT
- 404. Sum of Left Leaves | 所有左子树的和
- Android 自定义状态栏
- 杨辉三角
- 前端技能练习:javascript基础:修改this指针
- 13. 总结 JavaSE
- 树状数组(二)与poj2155
- WIN10下使用qt mingw64_4.9.2编译box2d
- 标识符
- Java HashTable HashMap ConcurrentHashMap 对比选择
- [mmc subsystem] mmc core(第二章)——数据结构和宏定义说明
- Codeforces Round #397(Div. 1 + Div. 2 combined)D. Artsem and Saunders【思维+乱搞】