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);
И это может быть проще. Просто посмотрите на примеры в Интернете.