C語言楊輝三角兩種實現(xiàn)方法
楊輝三角——C語言實現(xiàn)
楊輝三角:
在屏幕上打印楊輝三角。
1
1 1
1 2 1
1 3 3 1
……
根據(jù)上述例子可知:
1.每一行的第一個和第二個數(shù)為1;
2.其余的數(shù)為正上方和左邊數(shù)字之和。
方法一:利用二維數(shù)組實現(xiàn)
解題思路:
根據(jù)楊輝三角的規(guī)律,我們可以定義一個二維數(shù)組來實現(xiàn)楊輝三角的打印,其中數(shù)字的規(guī)律為:
data[i][j] = data[i - 1][j] + data[i - 1][j - 1],所以我們按照這個方法將數(shù)據(jù)填入二維數(shù)組之后打印即可。
代碼如下:
#include <stdio.h>
int main()
{
int n;
int data[30][30] = {1};//將第一行直接填好,為1
printf("請輸入要打印的行數(shù):>");
scanf("%d", &n);
for (int i = 1; i < n; i++)//從第二行開始填
{
data[i][0] = 1;//將每一行第一列先初始化為1,防止越界
for (int j = 1; j < i + 1; j++)
{
data[i][j] = data[i - 1][j] + data[i - 1][j - 1];
}
}
for (int i = 0; i < n; i++)//打印二維數(shù)組
{
for (int j = 0; j < i + 1; j++)
{
printf("%d ", data[i][j]);
}
printf("\n");
}
return 0;
}
運(yùn)行結(jié)果:
?
方法二(對方法一的改進(jìn)):
由于我在填第n行的楊輝三角時,只跟第n-1行的楊輝三角產(chǎn)生聯(lián)系,不會跟之前的有聯(lián)系,所以沒必要保存每一行的楊輝三角,利用一維數(shù)組,填一行打一行即可,這樣能讓空間復(fù)雜度從O(n^2)降低到O(n)。但是在填數(shù)據(jù)的時候不能對之前的數(shù)據(jù)覆蓋,所以需要從后向前填。而填楊輝三角順序?qū)Y(jié)果是沒有影響的,所以可以實現(xiàn)。
代碼如下:
#include <stdio.h>
int main()
{
int n;
int data[30] = { 1 };
printf("請輸入要打印的行數(shù):>");
scanf("%d", &n);
printf("1\n");//直接打印第一行
for (int i = 1; i < n; i++)//從第二行開始
{
for (int j = i; j > 0; j--)//從后往前填,避免上一行的數(shù)據(jù)在使用前就被覆蓋
{
data[j] += data[j - 1];
}
for (int j = 0; j <= i; j++)
{
printf("%d ", data[j]);
}
printf("\n");
}
return 0;
}
運(yùn)行結(jié)果:?

?總結(jié)
到此這篇關(guān)于C語言楊輝三角兩種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)C語言楊輝三角內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++11中的可變參數(shù)模板/lambda表達(dá)式
C++11的新特性可變參數(shù)模板能夠讓我們創(chuàng)建可以接受可變參數(shù)的函數(shù)模板和類模板,相比C++98和C++03,類模板和函數(shù)模板中只能含固定數(shù)量的模板參數(shù),可變參數(shù)模板無疑是一個巨大的改進(jìn),這篇文章主要介紹了C++11中的可變參數(shù)模板/lambda表達(dá)式,需要的朋友可以參考下2023-03-03
C語言函數(shù)傳遞數(shù)組和傳遞地址的區(qū)別你知道嗎
這篇文章主要介紹了C語言中數(shù)組作為函數(shù)的參數(shù)以及返回值的使用簡單入門,這里以一維數(shù)組作為基本條件進(jìn)行例子講解,需要的朋友可以參考下2021-09-09
VC外部符號錯誤_main,_WinMain@16,__beginthreadex解決方法
這篇文章主要介紹了VC外部符號錯誤_main,_WinMain@16,__beginthreadex解決方法,實例分析了比較典型的錯誤及對應(yīng)的解決方法,需要的朋友可以參考下2015-05-05
C++11/14如何使用typedef和using定義類型別名和別名模版
這篇文章主要介紹了C++11/14如何使用typedef和using定義類型別名和別名模版2023-04-04

