Получить числа составленные из 1, 2, 3, 4 по возрастанию

Всем привет! Мне нужно получить массив чисел которые состоят из 1, 2, 3, 4 и чтобы в массиве числа стояли по возрастанию. Нужно получить до n-ого числа(1<=n<=10^9) И это должно работать максимально быстро.

В массив возможно не поместится, попробуйте вектор из stl


Ответы (1 шт):

Автор решения: Harry
int main(int argc, const char * argv[])
{
    int v[9] = {1};
    for(;;)
    {
        int val = 0;
        for(int i = 0; i < 9; ++i) val = v[8-i] + val*10;
        cout << val << endl;
        int c = 1;
        for(int i = 0; c && i < 9; ++i)
        {
            v[i] += c;
            c = 0;
            if (v[i] > 4) v[i] = c = 1;
        }
        if (c) break;
    }
}
→ Ссылка