-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