Что означает А и В? На других страницах появляется определение, но я не могу понять его функцию

class Graph {
private:
    int n;
    list<int> *adj;

public:
    Graph(int n) {
        this->n = n;
        adj = new list<int>[n];
    }

    int isEulerian() {
        if (!isConnected())
            return 0;
        int odd = 0;
        for (int i = 0; i < n; i++)
            if (adj[i].size() & 1)
                odd++;
        if (odd > 2)
            return 0;
        return (odd)? 1 : 2;
    }
};

В строке, где он появляется adj[i].size() & 1, я не понимаю, что он делает, я не понимаю, с чем он сравнивается.

0
задан 07.03.2019, 13:50
1 ответ

SГ-mbolo & - оператор comparaciГіn бинарная; то, что он делает, одна operaciГіn И (AND) на бинарных данных в Вашу левую сторону и в Вашу правую сторону. Например:

  101010
&
  111000
--------
  101000

ВїQuГ© это делает в cГіdigo, который ты показываешь примера?

if (adj[i].size() & 1)
    odd++;

Odd в inglГ©s значь нечетные , из-за которого estГЎ считая все те .size() они нечетные. Для этого он воспользуется оператором comparaciГіn И бинарный, так как у всех nГєmeros нечетные вселенной есть один 1 в бите меньшего количества веса:

| decimal | binario | & 1 |
+---------+---------+-----+
|       1 |       1 |   1 |
|       2 |      10 |   0 |
|       3 |      11 |   1 |
|       4 |     100 |   0 |
|       5 |     101 |   1 |
|       6 |     110 |   0 |
|       7 |     111 |   1 |
|       8 |    1000 |   0 |
6
ответ дан 19.11.2019, 22:26

Теги

Похожие вопросы