1. 程式人生 > 其它 >楊輝三角形 C++ 無需陣列

楊輝三角形 C++ 無需陣列

問題描述:

請打印出下列三角形:

很明顯,第i行的第j個元素等於第i-1行的第j-1和j+1的元素和。

所以較常見的方法是用陣列儲存所有行的值,空格位置預設為0。

下面這種方法不需要額外的空間,直接觀察規則得到當前位置元素的值等於前一個位置的值 *(i - j + 1) / j. i為行號,j為列號(但這裡的列不包括數字後面空格所佔位置)。

參考自-[菜鳥教程]

#include<stdio.h>
#include<iostream>
using namespace std;

int main() {

    int rows, coef = 1;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 0; i < rows; ++i)
    {
        for(int space = 0; space < rows-i-1; ++space)
            cout <<"  ";

        for(int j = 0; j <= i; ++j)
        {
            if (j == 0 || i == 0)
                coef = 1;
            else
                coef = coef * (i - j + 1) / j;

            cout << coef << "   ";
        }
        cout << endl;
    }

    return 0;
}