杨辉三角

杨辉三角

我的未来我决定 提交于 2019-12-05 06:39:08
杨辉三角 1. 递归方法 package sort;/** * @author WangXiaoeZhe * @Date: Created in 2019/11/22 13:04 * @description: */public class YangHuiF { public static int fun(int i, int j) { if (j == 1 || i == j) { return 1; } else { return fun(i - 1, j) + fun(i - 1, j - 1); } } public static void main(String[] args) { /** * 打印的行数 */ int length = 6; for (int i = 1; i <= length; i++) { /** * 打印空格 */ for (int j = 1; j <= length - i; j++) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.printf("%4d", fun(i, j)); } System.out.println(); } }} 2.非递归方法 package sort;/** * @author WangXiaoeZhe * @Date:

浅谈杨辉三角【复习】

你。 提交于 2019-12-03 12:02:24
浅谈杨辉三角【复习】 杨辉三角,是 二项式系数 在三角形中的一种 几何排列 。 顾定义思用途:二项式定理和排列数预处理 重点在于它的性质(说不定就无意间考了): 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 一: 第n行的元素个数有n个; ! 二:第n行的所有元素之和为2^n-1^;!!!! 三: 第n行第m个数的值为C(n-1, m-1),其中C为组合数;!! 四:(a+b)^n^ 展开后的各项系数等于第n+1行的值;!! 五:第n行第m个数的奇偶判断,及C(n-1,m-1)的奇偶判断:(m-1)&(n-1)==(m-1)? 奇 : 偶;!!!!!! 例题一: http://acm.hdu.edu.cn/showproblem.php?pid=6143 题目大意: 一个人的名字有名和姓,名和姓上各有n个字符位置,每个位置的字符从m个字符里面选择。问你有多少个人的名字其名和姓上没有相同的字符。 (名或姓内部可以重复) 分析: 考虑第一组盒子,假设用了i种颜色的球, 那么设f(i)为用i种颜色的球(每种颜色必须用到)填n个盒子的种数,显然f(1)=1 则 f(i)=i^n^-c(1,i)×f(1)-c(2,i)×f(2)-....-c(i-1,i)×f(i-1) code: #include<iostream> #include

NO.118 杨辉三角

匿名 (未验证) 提交于 2019-12-02 23:40:02
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ ] /** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free(). */ int** generate(int numRows, int* returnSize, int** returnColumnSizes){ *returnSize=numRows; * returnColumnSizes=NULL; if(numRows<=0)return NULL; int **ret=(int **)malloc(sizeof(int *)); ret[0]=(int *)malloc(sizeof(int)); ret[0][0]=1; * returnColumnSizes=(int *)malloc(sizeof(int)); (*

C语言实现输出杨辉三角

匿名 (未验证) 提交于 2019-12-02 22:56:40
1.倒推法实现输出杨辉三角有半部分,代码如下: 1 #include <stdio.h> 2 int main () 3 { 4 int n , i , j , a [ 100 ]; 5 printf ( "请输入行数n:" ); 6 scanf ( "%d" ,& n ); 7 printf ( " 1" ); 8 printf ( "\n" ); 9 a [ 1 ]= a [ 2 ]= 1 ; 10 printf ( "%3d%3d\n" , a [ 1 ], a [ 2 ]); 11 for ( i = 3 ; i <= n ; i ++) 12 { 13 a [ 1 ]= a [ i ]= 1 ; 14 for ( j = i - 1 ; j > 1 ; j --) 15 a [ j ]= a [ j ]+ a [ j - 1 ]; 16 for ( j = 1 ; j <= i ; j ++) 17 printf ( "%3d" , a [ j ]); 18 printf ( "\n" ); 19 } 20 return 0 ; 21 } 运行结果: 2.实现输出杨辉三角全部,代码如下: 1 #include <stdio.h> 2 int main () 3 { 4 int a [ 10 ][ 21 ]; 5 int i , j ; 6 for ( i = 0 ; i

leetcode python  118.杨辉三角 119.杨辉三角 II

匿名 (未验证) 提交于 2019-12-02 22:54:36
https://leetcode-cn.com/problems/pascals-triangle/description/ https://leetcode-cn.com/problems/pascals-triangle-ii/description/ 两题基本是一样的,一开始用numpy,用数组处理,好像不能import numpy,playground不报错,执行界面报错。后来学了网上大牛的,把list当二维数组用,看得有点懵。。。。 贴个118的代码吧,119的改一下返回值就可以。 class Solution (object) : def generate (self, numRows) : L = [] if numRows == 0 : return L for i in range(numRows): L.append([ 1 ]) for j in range( 1 ,i+ 1 ): if j==i: L[i].append( 1 ) else : L[i].append(L[i- 1 ][j]+L[i- 1 ][j- 1 ]) return L 文章来源: leetcode python  118.杨辉三角 119.杨辉三角 II

打印杨辉三角

匿名 (未验证) 提交于 2019-12-02 21:40:25
   杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。    特点:     1、第一行有 1 个元素,第 n 行有 n 个元素     2、每一行的第一个元素和最后一个元素都是 1     3、从第三行开始,除去首尾位置的元素,每个元素等于上方元素与左上方元素之和    代码: 1 package com.demo; 2 3 /* 4 * 打印杨辉三角(10行) 5 * 使用二维数组 6 */ 7 8 public class YangHuiTriangle { 9 public static void main(String[] args) { 10 // 1.定义二维数组 11 // 显示10行 12 int[][] yangHui = new int[10][]; 13 14 // 2.给二维数组赋值 15 for (int i = 0; i < yangHui.length; i++) { 16 // 第几行,就有几个元素 17 yangHui[i] = new int[i + 1]; 18 // 给每行的首尾元素赋值,都等于1 19 yangHui[i][0] = 1; 20 yangHui[i][i] = 1; 21 // 从第三行开始,给剩下的元素赋值 22 if (i >= 2) { 23 for (int j = 1; j <

LeetCode 119:杨辉三角

二次信任 提交于 2019-12-02 11:49:07
杨辉三角 题目描述 思路1 代码实现 思路2 代码实现 题目描述 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例 1: 输入 : 3 输出 : [ 1 , 3 , 3 , 1 ] 进阶 : 你可以优化你的算法到 O(k) 空间复杂度吗? 思路1 初始化前两层,后面层直接累加左上方和右上方的数的和 代码实现 class Solution { public : //思路:初始化前两层,后面层直接累加左上方和右上方的数的和 vector < vector < int >> generate ( int numRows ) { vector < vector < int >> result ( numRows ) ; if ( numRows == 0 ) { return result ; } else if ( numRows == 1 ) { result [ 0 ] . push_back ( 1 ) ; return result ; } else if ( numRows == 2 ) { result [ 0 ] . push_back ( 1 ) ; result [ 1 ] . push_back ( 1 ) ; result [ 1 ] . push_back ( 1 ) ; return

蓝桥杯BASIC-7 特殊的数字

[亡魂溺海] 提交于 2019-12-02 06:38:52
问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。 输入格式 输入包含一个数n。 输出格式 输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。 样例输入 4 样例输出 1 1 1 1 2 1 1 3 3 1 数据规模与约定 1 <= n <= 34。 import java.util.Scanner; /** * 杨辉三角的做法是直接用一个二维数组,将第一列和斜线列赋值,最后进行从第三行开始 * 遍历进行求和即可 * @author little page * */ public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n = sc.nextInt(); int[][] a=new int[n][n]; for(int i=0;i<n;i++){ a[i][i]=1; a[i][0]=1; } for(int i=2;i<n;i++) for(int j=1;j<n-1;j++)

杨辉三角 直角表达,

别等时光非礼了梦想. 提交于 2019-12-02 03:04:34
public class YANGHUISANJIAO { public static void main(String[] args) { //定义了一个长度为10,高度为10的二维数组,数组中的值都为0; int[][] arr=new int[10][10]; for(int i=0;i<arr.length; i++) { //由于只是给杨辉三角内的位置赋值,所以是j<=i for(int j=0;j<=i;j++) { //根据规律,使用if else 赋值 if(j==0||j==i) { arr[i][j]=1; }else { arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; } /*由于只是输出杨辉三角范围内的值,所以在内层循环就输出,这种方法不能全部赋值完之后再输出 "\t"的原因是10和小于10的数组的宽度不同,所以使用\t制表符能使数与数之间距离相等 */ System.out.print(arr[i][j]+"\t"); } System.out.println(); } }} 来源: https://www.cnblogs.com/qq1661824348/p/11727838.html