1.main函数使用了堆栈的“41216”个字节: 超过了 /analyze:stacksize '16384'。 请考虑将某些数据移到堆中。这个应该怎么解决?
2.以下见代码:(报错信息在注释中)
#include<stdio.h>
int max(int a, int b) {
if (a >= b)return a;
else return b;
}
main() {
int n, c;
int w[100], v[100];
int i, j;
int m[100][100];//已有价值和剩余容量
int put[100];//是否放置
scanf_s("%d %d", &n, &c);
for (i = 0;i < n;i++) {
scanf_s("%d", &w[i]);
}
for (i = 0;i < n;i++) {
scanf_s("%d", &v[i]);
}
for (i = 0;i < n;i++) {
for (j = c;j >= 0;j--){
if (w[i] <= j) {//如果装得下
m[i][j]= max(m[i - 1][j - w[i]] + v[i], m[i - 1][j]);
}
else {
m[i][j] = m[i - 1][j];
}
}
}
printf("%d\n", m[n - 1][c]);//可读大小为40000个字节,但可能读取了-400个字节
for (i = 0;i < n;i++) {
for (j = c;j >= 0;j--) {
if (m[i][j] == m[i - 1][j])put[i] = 0;
else put[i] = 1;
}
}
for (i = 0;i < n;i++) {
printf("%d", put[i]);
printf(" ");
}
}
又:报错行的c是否该改为0?因为如果按照j表示剩余容量的设定,应该输出剩余容量为0时的最大价值
请各位大佬指教