杨辉三角

杨辉三角

旧时模样 提交于 2020-02-13 09:20:24
今天上了C#的课,课堂上又出现了那个杨辉三角,以前是看过了,是很简单,但记不起。 现在把它抄在这里,怕以后人家面试我时不会答。 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 namespace YangHuiTriangle 6 { 7 class Program 8 { 9 static void Main( string [] args) 10 { 11 const int M = 7 ; // 定义一个常量M用来行数 12 int [][] yhsj = new int [M][]; // 该数组用来存放杨辉三角 13 int i, j; 14 for (i = 0 ; i < M; i ++ ) // 该循环为每行分配存储空间 15 yhsj[i] = new int [i + 1 ]; 16 for (i = 0 ; i < M; i ++ ) // 首列和对角线赋值1 17 { 18 yhsj[i][ 0 ] = 1 ; 19 yhsj[i][i] = 1 ; 20 } 21 for (i = 2 ; i < M; i ++ ) 22 for (j = 1 ; j < i; j ++ ) 23 // 其它元素是前一行的前一列和前一行的当前列的和 24 yhsj[i

杨辉三角

天大地大妈咪最大 提交于 2020-02-10 23:33:35
#include<stdio.h> int main() { int a[31][31]; int n; while(~scanf("%d",&n)) { int i,j; for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { a[i][j]=1; } } for(i=1;i<=n;i++) { for(j=2;j<=i-1;j++) { a[i][j]=a[i-1][j]+a[i-1][j-1]; } } for(i=1;i<=n;i++) { for(j=1;j<=i-1;j++) { printf("%d ",a[i][j]); } printf("%d\n",a[i][i]); } printf("\n"); } return 0; } 来源: CSDN 作者: Dayline. 链接: https://blog.csdn.net/qq_45811601/article/details/104254979

生成器输出杨辉三角列表

烂漫一生 提交于 2020-02-10 19:45:26
2020-02-10 18:54:06 杨辉三角 定义如下: 1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / \ 1 5 10 10 5 1 把每一行看做一个list,试写一个generator,不断输出下一行的list 1 def triangles(): 2 i=1 3 list1=[1] 4 yield list1 5 i=2 6 list2=[1,1] 7 yield list2 8 list1=list2 9 while i<=10: 10 i+=1 11 list2=[0 for i in range(0,i)] 12 list2[0]=1 13 list2[-1]=1 14 for j in range(1,i-1): 15 list2[j]=list1[j-1]+list1[j] 16 list1=list2 17 yield list2 18 测试代码 1 # 期待输出: 2 # [1] 3 # [1, 1] 4 # [1, 2, 1] 5 # [1, 3, 3, 1] 6 # [1, 4, 6, 4, 1] 7 # [1, 5, 10, 10, 5, 1] 8 # [1, 6, 15, 20, 15, 6, 1] 9 # [1, 7,

java编写杨辉三角

99封情书 提交于 2020-02-09 16:31:14
import java.util.Scanner; /* *计算杨辉三角: * 规律:两边都是1 * 从第三行开始,上一行的前一个元素+与其并排的元素等于下面的元素 * 例如: * 1 * 11 * 121 * 1331 * 14641 */ public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); int N=sc.nextInt(); int [][]arr=new int[N][N]; //每一行的第一个和最后一个为1 for(int i=0;i<arr.length;i++){ for (int j=i;j<arr.length;j++){ arr[i][0]=1; arr[i][i]=1; } } //执行上一行的前一个加后面的等于下面的数字 for (int i = 2; i < arr.length; i++) { for (int j = 1; j < arr.length-1; j++) { arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; } } //打印一下二维数组,是个三角 for (int i=0;i<arr.length;i++){ for (int j = 0; j <=i; j++) {

试题 基础练习6 杨辉三角形

人盡茶涼 提交于 2020-02-08 18:00:56
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 杨辉三角形又称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。 # include <iostream> # include <set> # include <sstream> # include <string> # include <cmath> # include <vector> using namespace std ; int main ( ) { int n ; vector < long long > result [ 34 ] ; cin >> n ; for ( int i = 0 ; i < n ; i ++ ) for ( int j = 0 ; j <= i ; j ++ ) { if ( j == 0 || j == i ) {

蓝桥杯,杨辉三角形,Python

≯℡__Kan透↙ 提交于 2020-02-08 13:22:21
题目描述 问题描述 杨辉三角形又称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。 本题不难,但是因为踩了一个坑所以花了好长时间,我们先看错误代码: n = int(input(''))arr = [[]]*nfor i in range(n): for j in range(i+1): if j == 0 or i == j: arr[i].append(1) else: arr[i].append(arr[i-1][j-1] + arr[i-1][j]) print(" ".join(str(a) for a in arr[i])) n=4时,错误代码输出如下: 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 2 1 再输出arr如下: [[1, 1, 1, 1, 2, 1, 1, 2, 2, 1], [1, 1,

杨辉三角

醉酒当歌 提交于 2020-02-08 09:19:12
每行的第一个和最后一个都是1 进一步推算: 第1列全部为1,第一行全都是1,当列数等于行数为1 当前值等于头上的值加头上的左边的值 第一行一列,第二行两列,第三行三列……. 话不多说,直接上代码 package ace; public class sanjiao { /** * 打印杨辉三角形 */ public static void PascalTriangle() { //打印十行的杨辉三角形 int[][] arrays = new int[10][]; //行数 for (int i = 0; i < arrays.length; i++) { //初始化第二层的大小 arrays[i] = new int[i + 1]; //列数 for (int j = 0; j <= i; j++) { //是第一列,第一行,行数等于列数,那么通通为1 if (i == 0 || j == 0 || j == i) { arrays[i][j] = 1; } else { //当前值等于头上的值+头上左边的值 arrays[i][j] = arrays[i - 1][j] + arrays[i - 1][j - 1]; } } } System.out.println("在下小团团" + "-------------------------------"); for (int[]

119. 杨辉三角 II

假装没事ソ 提交于 2020-02-08 05:43:39
本题仅仅要求返回 索引 对应的行。 思路1 :递归。 根据递推公式,递归求上一行,最后求出当前行。 class Solution : def getRow ( self , rowIndex : int ) - > List [ int ] : if rowIndex == 0 : return [ 1 ] # 起点为1 else : lastRow = self . getRow ( rowIndex - 1 ) # 调用本身获取上一索引的结果,再计算当前行 curRow = [ ] for j in range ( 0 , rowIndex + 1 ) : if j == 0 or j == rowIndex : # 首尾为1 curRow . append ( 1 ) else : # 中间根据公式计算 curRow . append ( lastRow [ j - 1 ] + lastRow [ j ] ) return curRow 如果多加两行判断索引为1和2,击败更多,哈哈: elif rowIndex == 1 : return [ 1 , 1 ] elif rowIndex == 2 : return [ 1 , 2 , 1 ] 思路2 :动态规划。T(n)=O(K 2 ), S(n)=O(K 2 ) 1.初始化preRow ( 相当于dp数组 ) 2

杨辉三角形II

余生长醉 提交于 2020-02-07 06:04:29
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 3 输出: [1,3,3,1] 进阶: 你可以优化你的算法到 O(k) 空间复杂度吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/pascals-triangle-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class Solution { public : vector < int > getRow ( int rowIndex ) { //这道题是在杨辉三角形上的晋级; //先按照杨辉三角形的方法接一下; vector < vector < int >> res ( rowIndex + 1 ) ; if ( rowIndex == 0 ) { return { 1 } ; } res [ 0 ] . push_back ( 1 ) ; for ( int i = 1 ; i < rowIndex + 1 ; i ++ ) { res [ i ] . push_back ( 1 ) ; for ( int j = 1 ; j < i ; j ++ ) { res [ i ] . push_back ( res [ i - 1 ] [ j - 1 ] +

leetcode_119. 杨辉三角 II

我们两清 提交于 2020-02-05 10:15:43
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 3 输出: [1,3,3,1] 进阶: 你可以优化你的算法到 O(k) 空间复杂度吗? 解析:本题与上一题的不同是仅需要输出一行,另外额外要求空间复杂度O(K) 因此我们仅设置一维数组,代表每一行的值,每次计算一行,然后用这一行的数值计算下一行并覆盖。 class Solution { public : vector < int > getRow ( int rowIndex ) { vector < int > res ( rowIndex + 1 ) ; if ( rowIndex == 0 ) { res [ 0 ] = 1 ; return res ; } else { vector < int > tmp = getRow ( rowIndex - 1 ) ; for ( int i = 0 ; i < rowIndex + 1 ; ++ i ) { if ( i == 0 || i == rowIndex ) res [ i ] = 1 ; else res [ i ] = tmp [ i - 1 ] + tmp [ i ] ; } return res ; } } } ; 来源: CSDN 作者: 二次元憨批 链接: https:/