// Copyright (C) 2005, Ondra Kamenik // $Id: pascal_triangle.h 762 2006-05-22 13:00:07Z kamenik $ #ifndef PASCAL_TRIANGLE_H #define PASCAL_TRIANGLE_H #include namespace ogu { using std::vector; class PascalRow : public vector { int k; public: PascalRow() : vector(), k(1) { push_back(2); } void setFromPrevious(const PascalRow& prev); void prolong(const PascalRow& prev); void prolongFirst(int n); void print() const; }; class PascalTriangle { vector tr; public: PascalTriangle() {tr.push_back(PascalRow());} PascalTriangle(const PascalTriangle& triang) : tr(triang.tr) {} const PascalTriangle& operator=(const PascalTriangle& triang) { tr = triang.tr; return *this;} int noverk(int n, int k); void print() const; protected: void ensure(int n, int k); int max_n() const; int max_k() const; }; }; extern ogu::PascalTriangle ptriang; #endif // Local Variables: // mode:C++ // End: