コード例 #1
0
ファイル: main.cpp プロジェクト: knightzf/review
    int findIntegers(int num) {
        static unordered_map<int, int> m{{0, 1}, {1, 2}};

        if(m.count(num) == 0)
        {
            int len = log2(num) + 1;
            bool shouldBreak = false;
            int res = 0;
            for(int i = 0; i < len; ++i)
            {
                if(shouldBreak) break;
                if(num & (1 << (len - i - 1)))
                {
                    res += findIntegers((1 << len - i - 1) - 1);

                    if(i != 0 && num & (1 << (len - i)))
                    {
                        shouldBreak = true;
                    }
                }
                else
                {
                    res += findIntegers(num & ((1 << len - i) - 1));
                    break;
                }
            }

            m[num] = res;
        }

        return m[num];
    }
コード例 #2
0
int main()
{
	int i = 0;

	for (i = 0; i < 20; i++)
	{
		printf("\r\n num %d = %d",i ,findIntegers(i));
	}

	return 0;
}
コード例 #3
0
int main()
{
    int N = 100, a = 2, b = 3;
    std::vector<bool> vec(N, false);
    findIntegers(vec, a, b, N);
    for (int i = 0; i < N; i++) {
        if (vec[i]) {
            std::cout << i << std::endl;
        }
    }
    return 0;
}
コード例 #4
0
ファイル: DcModel.cpp プロジェクト: aykutbulut/DietCOLA
//#############################################################################
// Initial solve and find integers
bool
DcModel::setupSelf()
{
    bool feasible = true;
    solver_->messageHandler()->setLogLevel(0);
    initialSolve();
    sharedBasis_ = dynamic_cast<CoinWarmStartBasis*>
	(solver_->getWarmStart());

# ifdef DC_DEBUG_MORE
    std::string problemName;
    solver_->getStrParam(OsiProbName, problemName);
    printf("Problem name - %s\n", problemName.c_str());
    solver_->setHintParam(OsiDoReducePrint, false, OsiHintDo, 0);
# endif

    status_ = 0;

    findIntegers(true);

    bestObjective_ = 1.0e50;
    double direction = solver_->getObjSense();

    int numberColumns = getNumCols();
    if (!currentSolution_)
	currentSolution_ = new double[numberColumns];

    //continuousSolver_ = solver_->clone();
    numberRowsAtContinuous_ = getNumRows();

    maximumNumberCuts_ = 0;
    currentNumberCuts_ = 0;

    // FIXME:

    return feasible;
}