溫馨提示×

C++動態(tài)規(guī)劃怎樣解決楊輝三角形

c++
小樊
112
2024-07-05 19:13:30
欄目: 編程語言

在C++中,可以使用動態(tài)規(guī)劃的方法來解決楊輝三角形的問題。動態(tài)規(guī)劃的思想是將原問題拆分成多個(gè)子問題,并且保存子問題的解,以減少重復(fù)計(jì)算。以下是使用動態(tài)規(guī)劃解決楊輝三角形問題的示例代碼:

#include <iostream>
#include <vector>

using namespace std;

vector<vector<int>> generate(int numRows) {
    vector<vector<int>> result;

    if (numRows <= 0) {
        return result;
    }

    result.push_back({1});

    for (int i = 1; i < numRows; i++) {
        vector<int> row(i + 1, 1);
        for (int j = 1; j < i; j++) {
            row[j] = result[i - 1][j - 1] + result[i - 1][j];
        }
        result.push_back(row);
    }

    return result;
}

int main() {
    int numRows = 5;
    vector<vector<int>> triangle = generate(numRows);

    for (int i = 0; i < triangle.size(); i++) {
        for (int j = 0; j < triangle[i].size(); j++) {
            cout << triangle[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

在上面的代碼中,我們定義了一個(gè)函數(shù)generate來生成楊輝三角形,函數(shù)接受一個(gè)參數(shù)numRows表示要生成的行數(shù)。我們使用一個(gè)二維向量result來保存每一行的數(shù)據(jù),然后使用動態(tài)規(guī)劃的方法依次計(jì)算每一行的值并存儲在result中。最后,我們打印出生成的楊輝三角形。運(yùn)行結(jié)果如下:

1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 

這樣,我們就使用動態(tài)規(guī)劃的方法成功解決了楊輝三角形問題。

0