C++杨辉三角完美打印输出

//杨辉三角
//编程:要求输入一个正整数,打印除杨辉三角,如输入5,
//则输出
    //      1
  //  1   1
 //  1  2   1
// 1  3   3   1
//1 4   6   4   1
#include <iostream>
#include <deque>
using namespace std;
void Grial(int n)
{
    int b[(1+n)*n/2];
    //构造一个一维数组,为什么不构造二维数组呢?二维数组会浪费很多空间,有一半都用不上,
    //所以我选择1维数组来保存数字。
    int i=0;
    int j=0;
    for(i=0;i<n;i++)
    {
        int m = (1+i)*i/2;//层数从0层开始。m是第i层的第一个元素下标位置。
        b[m]=1;
        b[m+i]=1;//m+i是在i层的最右边的下表位置.

        int k = i;
        int s = (i-1+1)*(i-1)/2;//和因子的下标,跟完全二叉树不一样,这个很重要.
        for(j=m+1;j<m+k;j++)
        {
            //b[j]=b[j/2]+b[j/2+1];//此处是个失误,我当作二叉树来计算下标了,
            //很明显这不是一颗wanquan二叉树,所以不能用完全二叉树的性质来做。
             b[j]=b[s]+b[s+1];
             s++;
        }
    }
    //到这里实际上我们已经构造除了一个杨辉三角的一维数组,
    //现在看我如何打印他们.
    int k = 0;
    int sum = n;
    for(i=0;i<n;i++)
    {
        for(int m=sum;m>=0;m--)//哈哈,打印都不是事情.
        {
            cout<<" ";
        }
        sum--;
        for(j=0;j<i;j++)
        {
            cout<<b[k++]<<"  ";
        }
        cout<<endl;
    }
}
int main()
{
    Grial(10);
}
输出结果:
![杨辉三角](http://img.blog.csdn.net/20150601151034875)
时间: 2024-11-07 02:40:16

C++杨辉三角完美打印输出的相关文章

杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析

说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一  基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三角形中的一种几何排列.此处引用维基百科上的一张动态图以直观说明(原文链接http://zh.wikipedia.org/wiki/杨辉三角): 从上图可看出杨辉三角的几个显著特征: 1. 每行数值左右对称,且均为正整数. 2. 行数递增时,列数亦递增. 3. 除斜边上的1外,其余数值均等于其肩部两数

Java小案例——使用双重for循环实现杨辉三角的输出

杨辉三角特点分析(如图): *第i行有i列 *每一行的第一个数都为1 *每一行的最后一个数都为1 *当前数(非第一列和最后一列)等于上面一个数+上面一个数的左边的数 实现代码: /** * 要求:输出杨辉三角 * @author Administration * */ public class YangHuiTest { public static void main(String[] args) { //创建二维数组,定义了行,没有定义列 int[][] arr = new int[10][]

LeetCode (13) Pascal&#39;s Triangle (杨辉三角 )

题目描述 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Return 从第三行开始,每行除了最左边和最右边两个数为1,其他数字都是上一行中相邻两个数字之和.根据上述规则可以写出下面的代码: class Solution { public: vector<vector<int> > generateRow1() { vector<in

杨辉三角

1 package com.llh.demo; 2 3 /** 4 * 杨辉三角 5 * 6 * @author llh 7 * 8 */ 9 public class Test { 10 /* 11 * 杨辉三角 12 */ 13 public static void main(String[] args) { 14 int[] a = new int[11]; 15 int num = 1; 16 // 17 for (int i = 1; i <= 10; i++) { 18 for (i

杨辉三角实例菱形实例

杨辉三角实例 public class Hui { public static void main (String [] args){ int [][] a =new int [10][10]; for(int i=0;i<a.length;i++){ for(int j=0;j<=i;j++){ if(j==0||i==j){ System.out.print(" "+(a[i][j]=1)); }else {a[i][j]=a[i-1][j-1]+a[i-1][j];

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

使用Java打印杨辉三角

package 杨辉三角; import java.util.Scanner; public class 三角 { private static Scanner scn; public static void main(String[] args) { scn = new Scanner(System.in); System.out.println("请输入数据"); int n = scn.nextInt(); //定义一个二维数组 int [][] array = new int

Java的二维数组的应用及杨辉三角的编写

(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个,即该位置上的元素在该行上最大,在该列上最小(注:一个二维数组也可能没有这样的鞍点). /** * * @author liuhui *@version Java上机实验三 *@time 2016.10.30 */ public class javatest2 { public static int

实现杨辉三角的10种解法--体验Python之美

本文收集了使用python实现杨辉三角的多种解法,主要为网上收集,也有一些是自己写的.从中可以体会python编写一个算法的不同思想和Python语法的特点. 杨辉三角是什么?还是度娘吧,看起来像是这样的:                          1                          1   1                           1   2   1                         1   3   3   1