所以我在C中使用#define有点问题。我确定它只是一个小的语法问题,但我似乎无法找到它后面的内容梳理几个论坛。
我的代码是:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define max(x, y) (((x) > (y)) ? (x) : (y))
#define MAX_N (5)
#define m[MAX_N][MAX_N]
int wineProfitMemorized(int price[], int n, int begin, int end) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
m[i][j] = -99;
}
}
int year = 0;
++year;
if (begin > end) {
return 0;
}
if (m[begin][begin] == -99){
m[begin][begin] = price[begin] * year;
}
if (m[begin][end] == -99){
m[begin][end] = price[end] * year;
}
return max(m[begin + 1][end] + m[begin][begin], m[begin][end - 1] + m[begin][end]);
}
我想要做的就是解决这个葡萄酒销售问题,这个问题最初是通过记忆来递归解决的。
我必须定义这两个变量MAX_N = 5和数组m [MAX_N] [MAX_N],以便我可以在稍后将要面对的动态编程方法中进一步访问它。我必须打印出来并用值填充它,因此它不能是只读的。
有人可以告诉我#define有什么问题吗?它会在方法中产生多个错误,例如&#34;缺失;&#34;和#34;语法错误&#34;。
答案 0 :(得分:2)
您将宏定义与变量声明混淆。前两个宏很好,但第三个宏需要更改为声明。只需替换:
#define m[MAX_N][MAX_N]
使用:
int m[MAX_N][MAX_N];
这应该有所帮助。