2017-02-15 75 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; 
} 

Btw。我在使用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不是一個好名字。 numberOfRowsrowCountmatrixDimension1可能會更好。

順便說一下,使用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

謝謝,我已糾正錯誤,現在它正在工作,我不知道我可以做「field [i] .resize(m,1)」this但現在它是有幫助的。 –

相關問題