void put() const { putSub(); if (freqTbl.empty()) return; const uint32_t compSize = (uint32_t)vec.size(); for (size_t i = 0; i < freqTbl.size(); i++) { printf("freqTbl[%2d] = %8d(%5.2f%%, %5.2f%%)\n", (int)i, freqTbl[i], freqTbl[i] * 100.0 / compSize, freqTbl[i] * encTbl[i].len * 100.0 / bitSize_); } }
/** * Perform several algorithmic steps (or less) * @param steps on entry: requested number of steps, on exit: actual number of steps * -1 on exit means an error */ void solve(long long& steps) { int count = -1; while (true) { count++; if (count >= steps) break; if (mSubs.empty()) { steps = count; break; } Sub s = getSub(); mHandler(mIncumbent, s); int n = s.mBox.mDim; Box<FT> lb(n), rb(n); BoxUtils::divideByLongestEdge(s.mBox, lb, rb); Sub ls(lb); Sub rs(rb); putSub(ls); putSub(rs); } }
/** * Initialize the list of subproblems * @param sub */ void setInitialSub(Sub& sub) { putSub(sub); }