2017-09-21 71 views
-2
#include <iostream> 

using namespace std; 

聲明的變量和數組打印的二維棒切割件,我們得到最優切割

int cost[1000][1000]; 
int d[1000][1000]; 
int cutPrice; 

bool cut_is_vertical[1000][1000]; 
int max_index[1000][1000]; 
int n, m; 

此功能打印是打印件

void print(int n, int m) { 
if (max_index[n][m] == 0) { 
    cout << n << m <<" "; 
    return; 
} 
print(max_index[n][m]); 
print(n - max_index[n][m]); 

} 

此之後是垂直和水平切割的主要程序:

int main() 
{ 
cin >> n >> m >> cutPrice; 

for (int i = 1; i <= n; ++i) { 
    for (int j = 1; j <= m; ++j){ 
     cin >> cost[i][j]; 
    } 
} 
for (int i = 1; i <= n; ++i) { 
    d[i][0] = 0; 
} 
for (int j = 1; j <= m; ++j) { 
    d[0][j] = 0; 
} 
for (int i = 1; i <= n; ++i) { 
    for (int j = 1; j <= m; ++j) { 
     // Do not cut. 
     d[i][j] = cost[i][j]; 
     max_index[i][j] = 0; 

這是用於水平地切割

for (int k = 1; k <= i/2; ++k) { 
      if (d[i][j] < d[k][j] + d[i - k][j] - cutPrice) { 
       max_index[i][j] = k; 
       cut_is_vertical[i][j] = false; 
       d[i][j] = d[k][j] + d[i - k][j] - cutPrice; 
      } 
     } 

這是垂直切割。

for (int k = 1; k <= j/2; ++k) { 
      if (d[i][j] < d[i][k] + d[i][j - k] - cutPrice) { 
       max_index[i][j] = k; 
       cut_is_vertical[i][j] = true; 
       d[i][j] = d[i][k] + d[i][j - k] - cutPrice; 
      } 
     } 
    } 
} 
cout << d[n][m] << endl; 
print(n, m); 
return 0; 

}

,給我的是在打印功能,是錯誤的:

error: too few arguments to function 'void print(int, int)' 
    print(max_index[n][m]); 
       ^

note: declared here 
void print(int n, int m) { 
    ^

error: too few arguments to function 'void print(int, int)' 
    print(n - max_index[n][m]); 
         ^

note: declared here 
void print(int n, int m) { 
    ^

能否請你針點我哪裏是我的打印功能由於錯誤

+0

該錯誤的哪一部分不清楚?你的函數需要兩個參數,但你只提供一個 – UnholySheep

+0

關於這個錯誤信息實際上並不清楚?您只傳遞一個參數,其中'print()'函數需要兩個參數。此外,您的問題標題與該問題沒有任何關係。 – user0042

+0

錯誤消息是明示告訴你什麼是錯誤和在哪裏。只是讀它。 – ElChupacabra

回答

0

你應該這樣稱呼功能:

print(n, m); 

代替:

print(max_index[i][j]); 

你的函數有兩個參數的錯誤消息告訴你。