杨辉三角

蓝桥杯 杨辉三角C语言解法

岁酱吖の 提交于 2020-02-05 02:15:01
问题描述 杨辉三角形又称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 <stdio.h> int main ( ) { int i , j , n , t , sum ; scanf ( "%d" , & n ) ; int s [ 35 ] [ 35 ] ; //循环赋值为1 for ( i = 0 ; i < 35 ; i ++ ) { for ( j = 0 ; j <= i ; j ++ ) { s [ i ] [ j ] = 1 ; } } //计算中间值 for ( i = 0 ; i < n ; i ++ ) { for ( j = 1 ; j < i ; j ++ ) { s [ i ] [ j ] = s [ i - 1 ] [ j - 1 ] + s [ i - 1 ] [ j ] ; } } //循环输出

蓝桥杯-Python 基础练习 杨辉三角形

隐身守侯 提交于 2020-02-05 01:48:29
资源限制 时间限制: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。 代码如下: n = int ( input ( ) ) ls = [ [ 1 ] , [ 1 , 1 ] , ] for i in range ( 2 , n ) : p = ls [ i - 1 ] cur = [ 1 ] for j in range ( i - 1 ) : cur . append ( p [ j ] + p [ j + 1 ] ) cur . append ( 1 ) ls . append ( cur ) for i in range ( n ) : for j in range ( i + 1 ) : if j == i : print ( ls [ i ] [ j ] , end = '\n'

蓝桥杯杨辉三角形,处理空白符

好久不见. 提交于 2020-02-04 13:16:00
问题描述 资源限制 时间限制: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行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。 ans=[[1],[1,1]] #初始化前两行 n=int(input()) #确定输出行数 for i in range(1,35): t=[] for k in range(1,len(ans[i])): t.append(ans[i][k-1]+ans[i][k]) t.insert(0,1) #上一行两数相加得到下一行元素 t.append(1) #再在首尾插入1 ans.append(t) for j in range(0,n): t=1 for k in ans[j]: if(t==len(ans[j])): print(k,end='') #print方法默认是end='\r',这样就可以不换行 else: print(k,end='') print(' ',end='')

杨辉三角(数组运用)

谁说我不能喝 提交于 2020-02-02 21:08:15
import static java.lang.System.out; /** * ClassName:yangHuiTest * * @author: swimer * @description: 杨辉三角 输出一个10行的杨辉三角 * @date: 20/01/27下午 8:16 * version:1.0 * @since: jdk 1.8 */ public class YangHuiTest { public static void main(String[] args) { //定义一个二维数组存放10行的杨辉三角 int[][] yangHui = new int[10][]; for (int i = 0; i < yangHui.length; i++) { yangHui[i] = new int[i + 1]; } // System.out.println(yangHui); // 给杨辉三角赋值 // 每行首尾均为1 非首尾则符合 yangHui[i][j]=yangHui[i-1][j]+yangHui[i-1][j-1] for (int i = 0; i < yangHui.length; i++) { for (int j = 0; j < yangHui[i].length; j++) { yangHui[i][0] = yangHui[j][j

LeetCode 118 ----- 杨辉三角

岁酱吖の 提交于 2020-02-02 08:15:51
LeetCode 118 ----- 杨辉三角 题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 思路 第一行是固定的, 就只有1 第二行是固定的,就只有两个1 任意一行,开头和结尾都是1 第 i 行,有 i 列 第 i 行的 j 列,这个数字是根据 i -1 行,j -1 列的和 j 列相加 第 i 行的第 0 列和 最后一列 都是 1 实现 import java . util . ArrayList ; import java . util . List ; /** * Author: lisiyu * Created: 2020/2/1 */ // LeetCode 118 ----- 杨辉三角 public class Generate118 { public List < List < Integer > > generate ( int numRows ) { if ( numRows <= 0 ) { return new ArrayList < > ( ) ; } List < List < Integer > > result = new ArrayList < > ( ) ; // 第一行 List < Integer > firstLine = new ArrayList < > ( ) ; firstLine . add

leetcode 118.杨辉三角

拜拜、爱过 提交于 2020-02-01 22:17:40
118.杨辉三角 模拟就好了。 注意一下集合的声明: List<List<Integer>> ans = new ArrayList<List<Integer>>(); class Solution { public List < List < Integer > > generate ( int numRows ) { List < List < Integer > > ans = new ArrayList < List < Integer > > ( ) ; for ( int i = 0 ; i < numRows ; i ++ ) { List < Integer > t = new ArrayList < Integer > ( ) ; t . add ( 1 ) ; if ( i > 1 ) { List < Integer > p = ans . get ( i - 1 ) ; for ( int j = 1 ; j < i ; j ++ ) { t . add ( p . get ( j - 1 ) + p . get ( j ) ) ; } } if ( i > 0 ) t . add ( 1 ) ; ans . add ( t ) ; } return ans ; } } return ans; } } 来源: CSDN 作者: Coldc0 链接:

LeetCode记录 118. 杨辉三角

心不动则不痛 提交于 2020-02-01 15:03:20
LeetCode记录 118. 杨辉三角 问题 :给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 解题思路 : 每一行的行首和行尾为1 if ( j = = 0 | | j = = i ) { vec [ i ] [ j ] = 1 ; } 中间的第i个元素的值为上一行的第i-1个元素与i个元素的值之和, 即 vec[ i ][ j ] = vec [ i - 1 ][ j - 1 ] + vec[ i - 1 ][ j ] ; 代码(C++) : # include <iostream> # include <vector> using namespace std ; class Solution { public : vector < vector < int >> generate ( int numRows ) { vector < vector < int >> vec ( numRows , vector < int > ( ) ) ; //初始层数,赋值 if ( numRows == 0 ) return vec ; for ( int i = 0 ; i <

C++杨辉三角(初学)

爱⌒轻易说出口 提交于 2020-02-01 14:37:28
写在前面 第一次详细的写点东西,如有不对,请多多指教。 01 C++的 杨辉三角之 第一个版本–就是最基础的,输入行数,输出打印的图形。话不多说,代码如下: # include <iostream> using namespace std ; int main ( ) { int num ; //代表着要打印的行数 cin >> num ; //输入行数 int a [ num ] [ num ] ; //定义一个二维数组,但是打印的时候只打印一部分,不是打印全部 int i , j ; //i代表行,j代表列 for ( i = 0 ; i < num ; i ++ ) { for ( j = 0 ; j <= i ; j ++ ) { if ( j == 0 || i == j ) a [ i ] [ j ] = 1 ; //如果是第一列或者是每一行中行数与列数相等的那一列 else { a [ i ] [ j ] = a [ i - 1 ] [ j - 1 ] + a [ i - 1 ] [ j ] ; //该行列的数字为上上一行的左下方和右下方的数字之和 } cout << a [ i ] [ j ] << " " ; //在每一个输出之间加空格 } cout << endl ; //在每一行之后输出一个换行符, //所以是在第一个for循环外,第二个for循环内输出换行符

问题 C: 习题6-6 杨辉三角

拜拜、爱过 提交于 2020-01-31 09:33:44
问题 C: 习题6-6 杨辉三角 时间限制: 1 Sec 内存限制: 12 MB 献花: 183 解决: 164 [ 献花 ][ 花圈 ][ TK题库 ] 题目描述 按要求输入如下格式的杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 最多输出10层 输入 输入只包含一个正整数n,表示将要输出的杨辉三角的层数。 输出 对应于该输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开 样例输入 5 样例输出 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1参考代码: #include <stdio.h> int main(void){   int n,i,j;   scanf("%d", &n);   int a[n][n]; //定义一个2维数组,长度为n*n   for(i=0;i<n;i++){ //把第0列和对角线上的元素遍历为1     a[i][i]=1;     a[i][0]=1;   }   for(i=2;i<n;i++){ //计算中间的数,其满足规律:a[i][j]=a[i-1][j]+a[i-1][j-1]     for(j=1;j<=i-1;j++){       a[i][j]=a[i-1][j]+a[i-1][j-1];     }   }   for(i=0;i<n;i++){ /

杨辉三角

放肆的年华 提交于 2020-01-31 08:41:57
杨辉三角 题目链接 题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 题目分析:(c++描述) 想要生成杨辉三角的前numRows行,那么先生成此形状的二维向量(把初始值设为1),然后利用杨辉三角的性质,从第三行开始result[i][j+1]=result[i-1][j]+result[i-1][j+1];这样就得到了前numRows行的杨辉三角。 class Solution { public : vector < vector < int >> generate ( int numRows ) { vector < vector < int >> result ; int i , j ; for ( i = 0 ; i < numRows ; i ++ ) { result . push_back ( vector < int > ( i + 1 , 1 ) ) ; } for ( i = 2 ; i < numRows ; i ++ ) { for ( j = 0 ; j < i - 1 ; j ++ ) { result [ i ] [ j + 1 ] = result [ i - 1 ] [ j ] +