2017-02-15 17 views
0

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

#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; 
} 

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

+0

Что вы подразумеваете под «невозможно ввести переменные в циклы»? Также название не очень описывает проблему. –

+0

Мой английский плохой, но я отредактировал текст –

+0

Пожалуйста, объясните также, что это значит. Вы получили сообщение об ошибке? Значения не отображаются? Что вы пытаетесь ввести и что именно происходит. –

ответ

0
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); 

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

+0

Ошибка с m вместо n была опечаткой, но –

+0

Спасибо, я исправила ошибку, и теперь она работает, я не знаю, что я могу сделать "поле [i] .resize (m, 1)" это, но теперь это полезно. –

Смежные вопросы