2-комбинация без вложенного цикла в C ++, где количество итераций равно количеству 2-комбинаций - PullRequest
0 голосов
/ 11 октября 2018

Вот пример кода, который генерирует все возможные 2-комбинации без повторов:

int datanum = 4;
    for (int arg = 0; arg < datanum*datanum; arg++)
    {
        int j = arg % datanum;
        int i = arg / datanum;

        if (i < j)
        {
            std::cout << "i=" << i << " j=" << j << std::endl;
        }
    }

Вывод:

i=0 j=1
i=0 j=2
i=0 j=3
i=1 j=2
i=1 j=3
i=2 j=3

Мой вопрос: Как я могу генерировать 2-комбинации безповторение с использованием только одного цикла, где число итераций должно быть равно количеству 2-комбинаций (в случае N = 4 это должно быть 6, а не 4 * 4 = 16, как в моем текущем решении)?

1 Ответ

0 голосов
/ 11 октября 2018

как насчет этого:

int datanum = 4;
int i = 0;
int j = 1;
while (i < datanum-1) {
{
    std::cout << "i=" << i << " j=" << j << std::endl;
    j++
    if (j == datanum) {
        i++;
        j = i + 1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...