C++ в Visual Studio 2017, не может вводить переменные, которые находятся в цикле

Я решаю некоторую простую проблему, но у меня есть проблема, я могу только ввести переменные N, M и P, я не могу ввести переменные tempX и tempY, которые находятся в цикле, вот код:

#include <iostream>
#include <vector>
#include <minmax.h>

using namespace std;

typedef unsigned long long ull;

int main() {
ull n, m, p;
cin >> n >> m >> p;

vector<vector<unsigned short> > field;
field.resize(n);

for (ull i = 0; i < m; i++)
    for (ull j = 0; j < m; j++)
        field[i].push_back(1);



for (ull i = 0; i < p; i++) {
    ull tempX, tempY;
    cin >> tempX >> tempY;
    field[tempX][tempY] = 0;
}

for (ull i = 1; i < n; i++)
    for (ull j = 1; j < m; j++)
        if (field[i - 1][j - 1] != 0 && field[i][j] != 0)
            field[i][j] = min(field[i - 1][j], field[i][j - 1]) + 1;

ull maxLength = 0;
for (ull i = 0; i < n; i++)
    for (ull j = 0; j < m; j++)
        maxLength = max(maxLength, field[i][j]);

cout << maxLength << endl;

return 0;
}

Btw. У меня были проблемы с печатью простого текста с помощью cout, в коде не было проблем, но что-то мешало печатать простой текст, такой как "Hello world", это как-то связано с этой проблемой?

1 ответ

Решение
vector<vector<unsigned short> > field;
field.resize(n);

for (ull i = 0; i < m; i++)
    for (ull j = 0; j < m; j++)
        field[i].push_back(1);

Там уже есть ошибка. m вместо n

for (ull i = 0; i < n; i++)

Вы должны правильно назвать свои переменные. n это не хорошее имя. numberOfRows или же rowCount или же matrixDimension1 могло быть лучше.

Кстати, используйте stl.

for (ull i = 0; i < n; i++)
    for (ull j = 0; j < m; j++)
        field[i].push_back(1);

может быть

for (ull i = 0; i < field.size(); i++)
    field[i].resize(m, 1);

И это может быть проще. Просто посмотрите на примеры в Интернете.

Другие вопросы по тегам