最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言打印楊輝三角形的示例代碼

 更新時間:2022年02月07日 16:59:16   作者:飛向星的客機  
楊輝三角形,又稱帕斯卡三角形、賈憲三角形、海亞姆三角形,它的排列形如三角形。本文將為大家介紹通過C語言實現(xiàn)打印楊輝三角形的示例代碼,需要的可以參考一下

1. 題目描述

楊輝三角形

解題之前,我們先來了解一下楊輝三角形到底是什么?

楊輝三角形,又稱帕斯卡三角形、賈憲三角形、海亞姆三角形,它的排列形如三角形。

因為首現(xiàn)于南宋楊輝的《詳解九章算法》得名,而書中楊輝說明是引自賈憲的《釋鎖算書》,故又名賈憲三角形。

古代波斯數(shù)學(xué)家歐瑪爾·海亞姆也描述過這個三角形。在歐洲,因為法國數(shù)學(xué)家布萊茲?帕斯卡在1653年的《論算術(shù)三角》中首次完整論述了這個三角形,故也被稱作帕斯卡三角(Pascal’s triangle)。

楊輝三角的前10行寫出來如下

2. 解題思路

其實規(guī)律很簡單,我們來看一看

在最上面一行的中央寫下數(shù)字 1;

第二行,寫下兩個1,和上一行形成三角形;

隨后的每一行,開頭和最后的數(shù)字都是1,其他的每個數(shù)都是它左上方和右上方的數(shù)之和,就是說除每行最左側(cè)與最右側(cè)的數(shù)字以外,每個數(shù)字等于它的左上方與右上方兩個數(shù)字之和。

3. 動圖演示

4. 代碼實現(xiàn)

我們通過動圖可以得出以下結(jié)論

1、兩邊都是數(shù)字1;

2、從第三行開始,除了兩邊的數(shù)字1之外的數(shù)字都是由 “肩膀上” 的數(shù)字相加得到的。

對于算法不太熟悉的朋友,如果直接去打印,可能就比較困難,所以我們不妨拆開幾步來做。

Step1

1、定義一個9行9列的二維整型數(shù)組;

2、數(shù)組所有元素都賦值為1;

3、輸出數(shù)組所有元素

#include <stdio.h>

int main()
{
    //定義一個9行9列的二維整型數(shù)組
    int data[9][9];

    int i = 0;
    int j = 0;

    for (i = 0; i < 9; i++)
    {
        for (j = 0; j < 9; j++)
        {
            //數(shù)組所有元素都賦值為1
            data[i][j] = 1;
        }
    }

    //輸出數(shù)組所有元素
    for (i = 0; i < 9; i++)
    {
         for (j = 0; j < 9; j++)
         {
             printf("%6d", data[i][j]);
         }
         printf("\n");
    }
    return 0;
}

我們輸出看一下

但是我們只需要左下角的數(shù)字

所以對第二個for循環(huán)進行修改,讓j <= i;

#include <stdio.h>

int main()
{
    //定義一個9行9列的二維整型數(shù)組
    int data[9][9];

    int i = 0;
    int j = 0;

    for (i = 0; i < 9; i++)
    {
        for (j = 0; j < 9; j++)
        {
            //數(shù)組所有元素都賦值為1
            data[i][j] = 1;
        }
    }

    //輸出數(shù)組所有元素
    for (i = 0; i < 9; i++)
    {
    	//修改j <= i
         for (j = 0; j <= i; j++)
         {
             printf("%6d", data[i][j]);
         }
         printf("\n");
    }
    return 0;
}

運行看一看

Step2

中間位置的數(shù)字是由它上一行對應(yīng)位置的數(shù)字以及上一行對應(yīng)位置左側(cè)的數(shù)字相加得到;

因為下一行的情況總需要由上一行的情況推出,即我們需要記錄每一行的結(jié)果。

所以構(gòu)建楊輝三角本質(zhì)上是一個動態(tài)規(guī)劃問題,我們可以總結(jié)出如下推導(dǎo)式:

其中,dp[i][j]表示第i行的第j個數(shù)。

#include <stdio.h>

int main()
{
    //定義一個9行9列的二維整型數(shù)組
    int data[9][9];

    int i = 0;
    int j = 0;

    for (i = 0; i < 9; i++)
    {
        for (j = 0; j < 9; j++)
        {
            //數(shù)組所有元素都賦值為1
            data[i][j] = 1;
        }
    }

    //dp
    for (i = 1; i < 9; i++)
    {
        for (j = 1; j < i; j++)
        {
            data[i][j] = data[i-1][j] + data[i-1][j-1];
        }
    }

    //輸出數(shù)組所有元素
    for (i = 0; i < 9; i++)
    {
         for (j = 0; j <= i; j++)
         {
             printf("%6d", data[i][j]);
         }
         printf("\n");
    }
    return 0;
}

運行結(jié)果

居中顯示

我們?nèi)绾巫寳钶x三角形居中顯示呢?

就像這樣

很簡單,代碼如下

        for (int k = 0; k < 26 - (6 * i / 2); k++)
        {
            printf(" ");
        }

這是什么意思呢?

1、每行前輸出不等的空格;

2、為何i / 2?因為:居中只需左邊加空格;

3、為何要乘6?因為:輸出時用%6d;

4、為何要用26減?因為:不大不小剛剛好??

5. 完整代碼

代碼示例

#include <stdio.h>

int main()
{
    //定義一個9行9列的二維整型數(shù)組
    int data[9][9];

    int i = 0;
    int j = 0;

    for (i = 0; i < 9; i++)
    {
        for (j = 0; j < 9; j++)
        {
            //數(shù)組所有元素都賦值為1
            data[i][j] = 1;
        }
    }

    //dp
    for (i = 1; i < 9; i++)
    {
        for (j = 1; j < i; j++)
        {
            data[i][j] = data[i - 1][j] + data[i - 1][j - 1];
        }
    }

    //輸出數(shù)組所有元素
    for (i = 0; i < 9; i++)
    {
    	//用三角形的方式打印
        for (int k = 0; k < 26 - (6 * i / 2); k++)
        {
            printf(" ");
        }

        for (j = 0; j <= i; j++)
        {
            printf("%6d", data[i][j]);
        }
        printf("\n");
    }
    return 0;
}

6. 特性總結(jié)

楊輝三角的美妙之處在于:它是如此足夠簡單,但本身在數(shù)學(xué)上卻擁有豐富的魅力。

這是數(shù)學(xué)中的最令人稱奇的事物之一,隨便取諸多數(shù)學(xué)性質(zhì)中的某個,就能表明它是多么的精彩絕倫。

比如:隱藏數(shù)列、完全平方數(shù)、斐波那契數(shù)列、謝爾賓斯基三角、組合數(shù)學(xué)、二項式定理等等,這些都都可以在楊輝三角形中找到,你發(fā)現(xiàn)了嗎?

到此這篇關(guān)于C語言打印楊輝三角形的示例代碼的文章就介紹到這了,更多相關(guān)C語言楊輝三角形內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C 語言基礎(chǔ)教程(我的C之旅開始了)[七]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[七]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[七]...
    2007-02-02
  • 詳細聊一聊algorithm中的排序算法

    詳細聊一聊algorithm中的排序算法

    <algorithm>是C++標(biāo)準程序庫中的一個頭文件,定義了C++?STL標(biāo)準中的基礎(chǔ)性的算法(均為函數(shù)模板),下面這篇文章主要給大家介紹了關(guān)于algorithm中排序算法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C語言實現(xiàn)賓館管理系統(tǒng)課程設(shè)計

    C語言實現(xiàn)賓館管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)賓館管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解C語言中結(jié)構(gòu)體的自引用和相互引用

    詳解C語言中結(jié)構(gòu)體的自引用和相互引用

    這篇文章主要介紹了C語言中結(jié)構(gòu)體的自引用和相互引用,詳細解析了結(jié)構(gòu)體中指針的指向情況,需要的朋友可以參考下
    2016-04-04
  • VS2019創(chuàng)建C++工程的的實現(xiàn)步驟

    VS2019創(chuàng)建C++工程的的實現(xiàn)步驟

    本文主要介紹了VS2019創(chuàng)建C++工程步驟,包含新建項目、編輯文件、配置源文件目錄、編譯鏈接、輸出文件、設(shè)置斷點調(diào)試,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 利用上下文屬性將?C++?對象嵌入?QML?里

    利用上下文屬性將?C++?對象嵌入?QML?里

    這篇文章主要介紹了利用上下文屬性將?C++?對象嵌入?QML里,將?QML?對象加載到?C++?應(yīng)用程序中時,直接嵌入一些可在?QML?代碼中使用的?C++?數(shù)據(jù)會很有用。例如,這使得在嵌入對象上調(diào)用?C++?方法或使用?C++?對象實例作為?QML?視圖的數(shù)據(jù)模型成為可能,下面一起來學(xué)習(xí)該內(nèi)容吧
    2021-12-12
  • 減少C++代碼編譯時間的簡單方法(必看篇)

    減少C++代碼編譯時間的簡單方法(必看篇)

    下面小編就為大家?guī)硪黄獪p少C++代碼編譯時間的簡單方法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 詳解C++編程中表達式的語義與計算順序

    詳解C++編程中表達式的語義與計算順序

    這篇文章主要介紹了C++編程中表達式的語義與計算順序,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • C語言實現(xiàn)一個簡易通訊錄

    C語言實現(xiàn)一個簡易通訊錄

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)一個簡易通訊錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • OpenCV圖像處理之直方圖比較方法詳解

    OpenCV圖像處理之直方圖比較方法詳解

    直方圖比較是對輸入的兩張圖像進行計算得到直方圖H1與H2,歸一化到相同的尺度空間,然后可以通過計算H1與H2的之間的距離得到兩個直方圖的相似程度,進而比較圖像本身的相似程度。本文將為大家詳細講講直方圖比較的實現(xiàn)方法,需要的可以參考一下
    2022-09-09

最新評論

海安县| 汝阳县| 喜德县| 通江县| 航空| 綦江县| 云安县| 通道| 钟祥市| 东乌| 新干县| 枞阳县| 新兴县| 册亨县| 佛学| 柯坪县| 赤城县| 杨浦区| 阳江市| 赣州市| 通许县| 泊头市| 淮阳县| 调兵山市| 莎车县| 醴陵市| 濮阳县| 重庆市| 凤翔县| 灵川县| 湘西| 龙口市| 江口县| 张掖市| 信宜市| 绍兴县| 廊坊市| 利津县| 济南市| 卓资县| 乃东县|