Guest User

Untitled

a guest
Nov 23rd, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. class PrintingNeatly {
  2.  
  3. public:
  4. std::vector<int> words; // word lengthsint capacity;
  5. // line capacityint size;public:virtual ~PrintingNeatly(){}virtual void Read(std::istream& input){input >> capacity >> size;if (!input)return;words.clear();words.reserve(size);for (int i = 0; i < size; i++){int x;input >> x;words.push_back(x);}}virtual int Penalty(int x, int y) const{ //…}virtual int Optimal(int x) const{int result = 0;if (x > 0){result = std::numeric_limits<int>::max();for (int i = 1; Penalty(x-i, x-1) < std::numeric_limits<int>::max() && i <= x; i++)result = mas::Min(result, Optimal(x-i) + Penalty(x-i, x-1));}return result;}
  6. virtual std::list<int> Solution(int x) const{std::list<int> result;while (x > 0){int i = 1;while (Optimal(x-i) + Penalty(x-i, x-1) > Optimal(x))i++;result.push_front(i);x -= i;}return result;}virtual int Cost(const std::list<int>& x) const{int result = 0;int j = 0;for (std::list<int>::const_iterator i = x.begin();i != x.end() && result != std::numeric_limits<int>::max(); i++){int temp = Penalty(j, j + *i - 1);result = temp == std::numeric_limits<int>::max() ? temp : result + temp; j += *i;}return result;}};
Add Comment
Please, Sign In to add comment