-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) {
^
能否请你针点我哪里是我的打印功能由于错误
该错误的哪一部分不清楚?你的函数需要两个参数,但你只提供一个 – UnholySheep
关于这个错误信息实际上并不清楚?您只传递一个参数,其中'print()'函数需要两个参数。此外,您的问题标题与该问题没有任何关系。 – user0042
错误消息是明示告诉你什么是错误和在哪里。只是读它。 – ElChupacabra