題目敘述
每筆資料只有一行正整數N,要求輸出N行的楊輝三角形 (輸出格式如範例所示)。
範例輸入 #1
5
範例輸出 #1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
解題思路
可以使用陣列來存取上一行的資料來做這一行的運算。第一行因為都是一個1所以可以直接在For迴圈外面push_back一個1進去+輸出即可。使用For迴圈從第二行跑到第N行,裡面再放一個For迴圈,第幾行就要輸出幾個數字。在第二個For迴圈裡判斷目前是不是跑到第一個數字或是最後一個數字,如果是的話就是push_back一個1,如果不是的話就將上一行的這個位置的數字加上上一行的這個位置-1的數字push_back,最後再進行輸出+換行即可。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <vector>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<int>num;
num.push_back(1);
cout << 1 << endl;
for (int i = 2; i<=N; i++)
{
vector<int>newNum;
int output;
for (int j = 0; j<i; j++)
{
if (j == 0 || j == i-1)
{
newNum.push_back(1);
output = 1;
}
else
{
output = num[j-1]+num[j];
newNum.push_back(output);
}
cout << output << " ";
}
cout << "\n";
num.clear();
num.assign(newNum.begin(), newNum.end());
}
}
留言
張貼留言