杨辉三角

打印杨辉三角

为君一笑 提交于 2020-01-30 00:55:53
打印杨辉三角形(行数可以键盘录入) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 import java . util . Scanner ; public class duoweishuzu1 { public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( System . in ) ; int m = scanner . nextInt ( ) ; int arr [ ] [ ] = new int [ m ] [ m ] ; for ( int i = 0 ; i < arr . length ; i ++ ) { for ( int j = 0 ; j <= i ; j ++ ) { arr [ i ] [ 0 ] = 1 ; arr [ i ] [ i ] = 1 ; if ( i >= 2 && j >= 1 && j < i ) { arr [ i ] [ j ] = arr [ i - 1 ] [ j ] + arr [ i - 1 ] [ j - 1 ] ; } System . out . print ( arr [ i ] [ j ] + "\t" ) ; } System . out . println ( "\t" )

蓝桥:杨辉三角

耗尽温柔 提交于 2020-01-29 11:05:53
蓝桥:杨辉三角 问题描述 杨辉三角形又称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。 问题分析 三角形中的每个数字等于它两肩上的数字相加。 a[2][1]=a[1][0]+a[1][1] 并且a[i][0]=a[i][i]=1 代码 import java.util.Scanner; public class 杨辉三角 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int arr[][]=new int[n][n]; for(int i=0;i<n;i++){ arr[i][0]=arr[i][i]=1; for(int j

1211:杨辉三角形

℡╲_俬逩灬. 提交于 2020-01-28 03:49:18
这个题目来源于大一学习C++时的一道题(现在还是大一,哈哈) OK,来看题目: 打印杨辉三角形的前10行。杨辉三角形如下图: 1 1 1 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 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 C++代码实现: # include <bits/stdc++.h> using namespace std ; int a [ 11 ] [ 11 ] ; int main ( ) { int n = 10 ; a [ 1 ] [ 1 ] = 1 ; for ( int i = 2 ; i <= n ; ++ i ) { a [ i ] [ 1 ] = 1 ; a [ i ] [ i ] = 1 ; for ( int j = 2 ; j <= n ; ++ j ) { a [ i ] [ j ] = a [ i - 1 ] [ j - 1 ] + a [ i - 1 ] [ j ] ; } } for ( int i = 1 ; i <= n ; i ++ ) { for ( int j = 1 ; j <=

自建队列,利用队列输出杨辉三角

梦想的初衷 提交于 2020-01-25 12:19:42
题目:依据数据结构队列知识,编写一个算法,采用队列输出杨辉三角 解题思路: 1 自建队列,将杨辉三角的数据放入队列队尾; 2 打印时,将队列头取出打印,并从队列中删除; 代码如下: 队列代码 package queue ; /** * 定义一个队列queue */ public class Queue < T > { private Object [ ] data ; //队列中存放的数据 private int maxSize ; //队列的大小 private int front ; //指向队列头部的指针 private int rear ; //指向队列尾部的指针 public Queue ( int size ) { if ( size < 0 ) throw new IllegalArgumentException ( "数据非法: " + size ) ; this . maxSize = size ; this . data = new Object [ maxSize ] ; front = - 1 ; rear = - 1 ; } /** * 判断队列是否已满 * @return */ public boolean isFull ( ) { return rear == maxSize - 1 ; } /** * 判断队列是否为空 * @return */

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

醉酒当歌 提交于 2020-01-25 08:24:08
问题描述 杨辉三角形又称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+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。 二、第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。 杨辉三角代码中的的关键在于每次打印之后要在列表最后以为加上0这个元素 代码: n = int ( input ( ) ) N = [ 1 ] for m in range ( n ) : #打印10行 for i in range ( len ( N ) ) : if i == len ( N ) - 1 :

leetcode118. 杨辉三角

故事扮演 提交于 2020-01-25 05:26:46
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 思路:没什么可说的,依次往下求即可。 class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> dp = new ArrayList<>(); if(numRows == 0){ return dp; } dp.add(new ArrayList<>()); dp.get(0).add(1); //i指行数,dp从0开始,所以preRow是i-2 for(int i = 2;i <= numRows;i++){ List<Integer> row = new ArrayList<>(); List<Integer> preRow = dp.get(i-2); row.add(1); for(int j = 1;j < i-1;j++){ row.add(preRow.get(j) + preRow.get(j-1)); } row.add(1); dp.add(row); } return dp; } } 来源: CSDN

杨辉三角程序

戏子无情 提交于 2020-01-24 17:48:54
#include <stdio.h> #include <stdlib.h> #define N 8 int main() { int a[N][N]={{1},{1,1}}; int i,j; for(i=1;i<N-1;i++) { for(j=0;j<=i+1;j++) { a[i+1][j]=a[i][j]+a[i][j-1]; // 当j==0时,a[i][j-1] 为上一行最后一个数,被初始化为0 ,即a[i][j]+a[i][j-1]=1;当j==i+1时,a[i][j]==0,a[i][j-1]==1, 即改行最后一个数a[i+1][j]置为1 } } for(i=0;i<N;i++) { for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } system("pause"); } 来源: CSDN 作者: dusin 链接: https://blog.csdn.net/dusin/article/details/104080902

(C语言)蓝桥杯-杨辉三角形

孤街醉人 提交于 2020-01-24 17:04:15
(C语言)蓝桥杯-杨辉三角形 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行:   1   1 1   1 2 1   1 3 3 1 给出n,输出它的前n行。 数据规模与约定 1 <= n <= 34 # include <stdio.h> # define M 34 int main ( ) { int n ; int i , j ; int y [ M ] [ M ] ; scanf ( "%d" , & n ) ; for ( int i = 0 ; i < n ; i ++ ) { y [ i ] [ 0 ] = 1 ; y [ i ] [ i ] = 1 ; //杨辉三角形每行第一列和最后一列数据都为1 for ( int j = 1 ; j < i ; j ++ ) { y [ i ] [ j ] = y [ i - 1 ] [ j - 1 ] + y [ i - 1 ] [ j ] ; //每个数字等于肩上两数字之和 } } for ( int i = 0 ; i < n ; i ++ ) { for ( int j = 0 ; j <= i ; j ++ ) { printf ( "%d " , y [ i ] [ j ] ) ;

基础练习 杨辉三角形

亡梦爱人 提交于 2020-01-22 14:16: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。 import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int [][]arr=new int[n][n]; for(int i=0;i<n;i++) { arr[i][0]=1; arr[i][i]=1; } if(n>2) { for(int j=2;j<n;j++) { for(int k=1;k<n-1;k++) { arr[j][k]

梵高先生-杨辉三角

北城以北 提交于 2020-01-22 12:38:17
梵高先生-杨辉三角 谁的父亲死了 请你告诉我如何悲伤 谁的爱人走了 请你告诉我如何遗忘 ——李志《梵高先生》 2009年的最后一天 在义乌隔壁酒吧 李志为了还做唱片欠下来的20W 巡回35场演出 在这晚完成 喝醉了的逼哥哽咽着唱完梵高先生 说最后一次唱这歌。他粗鲁的打断了大家的合唱,然后用最沙哑的嗓音唱了起来,哪天,唯一和他合音的只有一只狗。 抬头再看了一眼星空和黑夜,今晚的星星变成了一个三角形的样子,像这样: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 … 现在给你一个正整数 n ,请你给出星空的前 n 行。 Input 输入文件共一行,包含一个正整数 n (1≤n≤20)。 Output 输出文件共 n 行,即星空的前 n 行。每行包含若干正整数,这些正整数之间用一个空格隔开(不能有多余的空格),最后一个正整数后面没有空格。 Example input 4 output 1 1 1 1 2 1 1 3 3 1 #include <iostream> using namespace std; int main() { int N; cin>>N; int a[N][N]; for(int i=0;i<N;i++){ for(int j=0;j<=i;j++){ if(j==0||i==j){ a[i][j]=1; }else{ a[i][j]=a[i-1][j]