2017-09-21 32 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]); 

你的函数有两个参数的错误消息告诉你。