#UBB Problemă asta implică utilizarea unui vector care să fie suprascris pe măsură ce se parcurg liniile. Aceasta este aproape aceeași metodă ca varianta de generare cu un singur vector a triunghiului lui Pascal, doar că se va afișa toată linia.

Rezolvare

Varianta optimă

Citim r, îl introducem în funcția pascal(), iar apoi afișăm toate valorile din vectorul generat.

#include <iostream>
using namespace std;
void pascal(int niv, int c[]){
    int level = 1;
    c[1] = c[2] = 1;
    while(level < niv){
        level++;
        c[level + 1] = 1;
        for(int i = level; i >= 2; i--)
            c[i] += c[i-1];
    }
}
int main(){
    int c[1001], r;
    cin >> r;
    pascal(r, c);
    for(int i=1; i<=r+1; i++)
	    cout << c[i] << " ";
    return 0;
}

Varianta ineficientă

Desigur putem să rezolvăm problema mai literal, deoarece știm că valorile numerelor din triunghiul lui Pascal reprezintă , linie și poziție începând de la 0.

#include <iostream>
int combinari(int n, int k){
    if(k == 0 || n == k)
        return 1;
    return combinari(n-1, k) + combinari(n-1, k-1);
}
int main(){
	int r, c[1001];
	cin >> r;
	for(int i=0; i<=r; i++){
		c[i]=combinari(r,i);
		cout << c[i] << " ";
	}
}

Această variantă mai mult ca sigur nu ar fi luat punctaj maxim, deoarece este foarte ineficientă, și ar lua limită de timp.