2017-02-15 1 views
0

Ich löse ein einfaches Problem, aber ich habe ein Problem, ich kann nur die Variablen N, M und P eingeben, ich kann Variablen TempX nicht eingeben und tempY, die in loop sind, hier ist der code:C++ in Visual Studio 2017, kann keine Variablen eingeben, die in Schleife sind

#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. Ich hatte Probleme mit dem Drucken von einfachen Text mit Cout, es gab kein Problem im Code, aber etwas verhindert den Druck einfacher Text wie "Hallo Welt", ist das in irgendeiner Weise mit diesem Problem verbunden?

+0

Was meinen Sie mit "kann Variablen in Schleifen nicht eingeben"? Auch der Titel ist nicht sehr beschreibend für das Problem. –

+0

Mein Englisch ist schlecht, aber ich habe den Text bearbeitet –

+0

Bitte erklären Sie auch, was es bedeutet. Sie erhalten einen Fehler? Werte erscheinen nicht? Was Sie eingeben möchten und was genau passiert. –

Antwort

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

da ist schon ein Fehler da. m statt n

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

sollten Sie richtig Ihre Variablen nennen. n ist kein guter Name. numberOfRows oder rowCount oder matrixDimension1 könnte besser sein.

Übrigens, verwenden Sie stl.

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

konnte

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

sein, und es könnte einfacher sein. Schau dir Beispiele online an.

+0

Fehler mit m statt n war ein Tippfehler, aber –

+0

Vielen Dank, ich habe Fehler korrigiert und jetzt funktioniert es, ich weiß nicht, dass ich "field [i] .resize (m, 1)" dies tun kann jetzt ist es hilfreich. –

Verwandte Themen